//繪製刻度類
package com
{
import flash.display.Shape;
public class Box extends Shape
{
public function Box()
{
init();
}
private function init():void
{
this.graphics.beginFill(0x00ff00);
this.graphics.drawRect(-3, -85, 6, 25); //矩形條寬6
this.graphics.endFill();
}
}
}
//繪製時鐘的指標類
package com
{
import flash.display.Shape;
public class Xian extends Shape
{
//len長度,color顏色
public function Xian(len:uint, color:uint):void
{
init(len, color);
}
private function init(len:uint, color:uint):void
{
this.graphics.lineStyle(2,color);
this.graphics.moveTo(0,0); //線條的起點(原點)
this.graphics.lineTo(0,len * -1); //線條的終點(乘以負數,向上畫;乘以正數,向下畫;)
this.graphics.endFill();
}
}
}
文檔類
package
{
import com.Box;
import com.Xian;
import flash.display.Sprite;
import flash.events.Event;
public class Main extends Sprite
{
//繪製三條指標
private var shizhen:Xian = new Xian(25, 0x000000); //時針
private var fenzhen:Xian = new Xian(40, 0xff00ff); //分針
private var miaozhen:Xian = new Xian(55, 0xff0000); //秒針
private var shijian:Date;
public function Main():void
{
init();
}
private function init():void
{
var obj:Sprite = new Sprite();
obj.x = 250;
obj.y = 180;
this.addChild(obj);
//繪製錶盤
for(var i:uint = 0; i < 12; i++)
{
var biaoshi:Box = new Box();
biaoshi.rotation += i * 30; //每產生一個,就在之前的角度上旋轉30度
obj.addChild(biaoshi);
}
obj.addChild(shizhen);
obj.addChild(fenzhen);
obj.addChild(miaozhen);
addEventListener(Event.ENTER_FRAME, dong);
}
//指標轉動函數
private function dong(evt:Event):void
{
shijian = new Date();
//秒針的旋轉角度演算法:轉一周360度,一分鐘60秒,所以每一秒也就是旋轉6度。
miaozhen.rotation = shijian.seconds * 6;
//分針的旋轉角度演算法:和秒針同理,每一分鐘也是旋轉6度,再加上每一條針也要轉動的角度
fenzhen.rotation = shijian.minutes *6 + shijian.seconds * 0.1;
//時針旋轉角度演算法:
shizhen.rotation = shijian.hours * 30 + shijian.minutes * 0.5 + shijian.seconds * 0.0083;
}
}
}