您的位置:首页 > 移动开发 > 微信开发

actionscript编写的时钟小程序

2009-09-01 14:38 302 查看
今天用actionscript3.0编写了一个时钟小程序,现将代码贴在我的博客里,供大家共享。

 

代码如下:

package 

{

    import flash.display.Shape;

    import flash.display.Sprite;

    import flash.text.TextField;

    import flash.utils.Timer;

    import flash.events.TimerEvent;

   

    /**

     * ...

     * @author me

     */

    public class Clock extends Sprite

    {

        private var circle:Sprite;

        private var secondHand:Shape;

        private var minuteHand:Shape;

        private var hourHand:Shape;

        private var circleX:int = 200;

        private var circleY:int = 200;

        private var circleRadium:int = 100;   

        private var secondsOneDay:int = 24 * 60 * 60;

        private var secondsOneHour:int = 60 * 60;

        private var timer:Timer;

       

        public function Clock()

        {

            init();

            drawlabel();

            drawHand();

            showtime(new Date());

            timer = new Timer(1000);

            timer.addEventListener(TimerEvent.TIMER, onRotation);

            timer.start();

        }

       

        private function onRotation(e:TimerEvent):void

        {

            showtime(new Date());

        }

       

        private function showtime(date:Date):void

        {

            var hourrotation:Number = date.getHours();

            var minuterotation:Number = date.getMinutes();

            var secondrotation:Number = date.getSeconds()+1;

            hourHand.rotation = hourrotation * 30  + minuterotation*0.5;

            minuteHand.rotation = minuterotation * 6 + secondrotation*0.1;

            secondHand.rotation = secondrotation * 6;

        }

       

        private function drawHand():void

        {

            hourHand = new Shape();

            hourHand.graphics.lineStyle(3.0, 0x003366);

            hourHand.graphics.moveTo(0, -20);

            hourHand.graphics.lineTo(0, 0);

            hourHand.x = circleX;

            hourHand.y = circleY;

            addChild(hourHand);

            minuteHand = new Shape();

            minuteHand.graphics.lineStyle(2.0, 0x000099);

            minuteHand.graphics.moveTo(0, -50);

            minuteHand.graphics.lineTo(0, 0);

            minuteHand.x = circleX;

            minuteHand.y = circleY;

            addChild(minuteHand);

            secondHand = new Shape();

            secondHand.graphics.lineStyle(0.5, 0xcc0033);

            secondHand.graphics.moveTo(0,-75);

            secondHand.graphics.lineTo(0, 0);

            secondHand.x = circleX;

            secondHand.y = circleY;

            addChild(secondHand);

        }

       

        private function init():void

        {

            circle = new Sprite();

            circle.graphics.beginFill(0xeeeeff)

            circle.graphics.drawCircle(circleX, circleY, circleRadium);

            circle.graphics.endFill();

            addChild(circle);

           

        }

       

        private function drawlabel():void

        {

            for (var i:int = 1; i <= 12; i++)

            {

                var label:TextField = new TextField();

                label.text = i.toString();

                var angel = i * 30 * Math.PI / 180;

                label.x = circleX + (0.9 * Math.sin(angel) * circleRadium) - 5  ;

                label.y = circleY - (0.9 * Math.cos(angel) * circleRadium) - 9  ;

                addChild(label);

            }

        }

       

       

    }

   

}

 

如要观看效果,按下述步骤:

1.将上述代码保存为Clock.as文件;

2.打开Flash CS4;

3.新建一个.fla的文件,保存在与Clock.as同一目录下;

4.在.fla的属性面板有个类属性,文本框中填上Clock,记住,不要加.as后缀

5.点击文本框旁边的笔,显示出代码

6.按Ctrl+Enter键测试即可

 

重点:

在编写的时候,遇到的第一个问题,就是1-12数字如何确立坐标的问题,大家都知道,一个钟面是360度,那么一个数字即为1格所占的角度

便是30度,对于每个数字的横坐标位置即是圆心的x坐标加上图中所标识的X,而纵坐标即是圆心的y坐标减去图中所标识的Y,之所以是减,是因为纵坐标在flash中与数学中是相反的,根据屏幕而定的,现在知道一个块是30度,又知道斜边也就是圆半径的长度,则可通过三角函数推到出x,y的值,从而定位好数字的坐标。

另外一个问题是模拟时钟转动的问题,我写了一个定时器,即Timer,参数是1000,单位是毫秒,即隔1秒即会执行相应的处理函数,这里是onRotation函数,关于时针,分针,秒针的指向问题,因为一秒中一格是6度,则秒针的指向即当前秒数乘以6几位它的角度,而分针则是分数乘以6再加上秒数乘以0.1,0.1的得来是这样的,一分钟有60秒,一分钟是6度,则1秒是0.1度,时针是这样的,一个小时是60分钟,一个小时一格是30度,则1分钟走0.5度,好了,希望我解释的清楚了。呵呵



 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息