【AS3代碼】動態時鐘

來源:互聯網
上載者:User

 //繪製刻度類

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;
            
            
        }
    }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.