Цитата:
2 deamoK
* Частота кадров стоит 24 (как-то не задумываясь поставил).
Если можно - поподробнее, чем Timer лучше, почему не setInterval или не EnterFrame?
* В спрайте и рисую, просто если вращать спрайт, то вращение будет не совсем правильным для стрелки толщиной более 1 пикселя.
Представь как вращается стрелка вокруг красной точки (см рисунок).
|
вот пример, наклепал часы без контейнеров и с таймером:

Код AS3:
package
{
import flash.display.Shape;
import flash.display.Sprite;
import flash.events.TimerEvent;
import flash.utils.Timer;
public class SimpleTest extends Sprite
{
private var minHand:Shape;
private var secHand:Shape
private var timer:Timer;
private var date:Date;
private var border:Shape;
private var hourHand:Shape;
private var sec:int;
private var min:int;
private var hour:int;
public function SimpleTest()
{
secHand = new Shape();
minHand = new Shape();
hourHand = new Shape()
border = new Shape()
timer = new Timer(1000);
border.graphics.lineStyle(1, 0xCCCCCC);
border.graphics.drawCircle(0, 0, 110);
border.graphics.beginFill(0);
border.graphics.drawCircle(0, 0, 5)
secHand.graphics.beginFill(0xFF0000);
secHand.graphics.drawRect(-1, -100, 2, 120);
minHand.graphics.beginFill(0);
minHand.graphics.drawRect(-2, -80, 4, 80);
hourHand.graphics.beginFill(0xCCCCCC)
hourHand.graphics.drawRect(-3, -60, 6, 60)
addChild(hourHand);
addChild(minHand);
addChild(secHand);
addChild(border);
x = y = 300;
timer.addEventListener(TimerEvent.TIMER, onTick);
timer.start();
onTick()
}
private function onTick(e:TimerEvent = null):void
{
date = new Date();
sec = date.getSeconds();
min = date.getMinutes();
hour = date.getHours();
secHand.rotation = sec * 6;
minHand.rotation = min * 6 + sec / 10;
hourHand.rotation = hour * 30 + min / 2;
}
}
}