Показать сообщение отдельно
Старый 28.10.2010, 18:14
deamoK вне форума Посмотреть профиль Отправить личное сообщение для deamoK Найти все сообщения от deamoK
  № 5  
Ответить с цитированием
deamoK
 
Аватар для deamoK

Регистрация: Sep 2010
Сообщений: 57
Цитата:
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;
		}
	}
}


Последний раз редактировалось deamoK; 28.10.2010 в 18:34.