用as3写的纯代码时钟,通过获取系统时间模拟时钟的转动…效果预览见下;

设计思路:表盘设计为一个sprite的容器obj,新建box类标示时钟刻度,时针分针秒针就是三种不同颜色不同长度的线条,可将画线封装成一个方法, 返回颜色和长度两个参数,而后在main函数中调用即可,可达到简化程序的目的…三个指针以表盘中心旋转,通过公式计算旋转角度即可…

代码参考:

1.box类 时钟刻度

package{

import flash.display.Shape;

public Class Box extends Shape{

public function Box():void{

init();

}

private function init():void{

this.graphics.beginFill(0x00ff00);
this.graphics.drawRect(-3,-85,6,25);       //注意矩形中心点
this.graphics.endFill();

}}}

 

2.指针类Xian

package{

import flash.display.Shape;

public Class Xian extends Shape{

public function xian(len:uint,color:uint):void{

init(len,color);

}

priate 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();
}

}}}

 

3. Main()函数

package{

import flash.display.Sprite;

import flash.events.Event;

import flash.events.DateEvent;

public Class Main extends Sprite{

private var shizhen:Xian=new Xian(25,0x00ff00);

private var fenzhen:Xian=new Xian(35,0xff00ff);

private var miaozhen:Xian=new Xian(55,0x00ffff);

private var shijian:Date=new Date();

public function Main():void{

init();

}

private function init():void{

private var obj:Sprite=new Sprite();

obj.x=obj.y=240;

for(var i:uint=0;i<12;i++){

var biaoshi:Box=new Box();

obj.rotation+=i*30;

obj.addChild(biaoshi);

}

obj.addChild(shizhen);

obj.addChild(fenzhen);

obj.addChild(miaozhen);

obj.addEventListener(Event.ENTER_FRAME,dong);

private function dong():void{

shijian=new Date();
miaozhen.rotation=shijian.seconds*6;
fenzhen.rotation=shijian.minutes*6+shijian.seconds*0.1;
shizhen.rotation=shijian.hours*30+shijian.minutes*0.5+shijian.seconds*1/120;

}

}

}

    博视界科技专注于沉浸式全景数字餐厅、全息酒店宴会厅,旨在帮传统餐饮用科技玩跨界,欢迎咨询!

官方网站:www.boseetech.com

联系方式:    

微信联系我:


    【声明】转载本文请注明出处三人行设计,并保留有效链接:flash as3纯代码模拟时钟 http://www.srxtuan.com/archives/1414,谢谢!