我的第一个AS3程序:Kclock(Flash 时钟)



个人总结:

1、AS3代码规范和习惯和之前的AS1,AS2是完全不同的,变得太多了!

2、比较欣赏AS3中的document class引用,能够完全做到界面和代码完全分离!界面在Kclock.fla文件里,所有的代码都在Kclock.as代码文件里!爽吧!

3、AS1,AS2是通过attachMovie方法把库里(通过Linkage中的关键字)的MC加载到场景中的,AS3则是将把库里(通过Linkage中的类)的MC,将其看作一个类,通用new 类名的方式,再通过addChild方法把它加载到场景中。这个是完全和原来不一样了!

4、用Timer类来代替原来的setInterval方法,这个到我原来写过的Thread类很类似的(激动一下)!

5、这个程序我花了一个下午的时间写出来的,属于一个习作,为了感受一下AS3!对于原来的flash开发者来说:就是把习惯进行根本 转变一下!



效果截图:




Kclock代码:

package {

      import flash.display.Sprite;

      import flash.events.TimerEvent;

      import flash.utils.Timer;

      public class Kclock extends Sprite {

            public var ticker:Timer;

      public function Kclock() {

            this.drawFace();

            this.drawHand();

            this.update();

            this.ticker = new Timer(1000);

            this.ticker.addEventListener(TimerEvent.TIMER, onTick);

            this.ticker.start();

      }



      private function drawFace():void{

            var face:Face = new Face();

            face.x = 150;

            face.y = 150;

            face.name = "face";

            this.addChild(face);

      }



      private function drawHand():void{

            var sec:SecondHand = new SecondHand();

            sec.x = 150;

            sec.y = 150;

            sec.name = "sec";

            this.addChild(sec);

            var min:MinuteHand = new MinuteHand();

            min.x = 150;

            min.y = 150;

            min.name = "min";

            this.addChild(min);

            var hou:HourHand = new HourHand();

            hou.x = 150;

            hou.y = 150;

            hou.name = "hou";

            this.addChild(hou);

            var cen:Center = new Center();

            cen.x = 150;

            cen.y = 150;

            cen.name = "cen";

            this.addChild(cen);

      }



      public function onTick(evt:TimerEvent):void{

            this.update();

      }



      private function update():void{

            var today:Date = new Date();

            var len:uint = this.numChildren;

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

                  var clild:Sprite = this.getChildAt(i) as Sprite;

                  switch(clild.name){

                        case "sec":

                                    clild.rotation = today.getSeconds()*6;

                                    break;

                        case "min":

                                    clild.rotation = today.getMinutes()*6;

                                    break;

                        case "hou":

                                    clild.rotation = (today.getHours() * 30) + (today.getMinutes() * 0.5);

                                    break;

                  }

            }

      }

}

}



下载文件:Kclock.rar


文件清单:

1、Kclock.fla flash源文件

2、Kclock.as 代码文件

3、Kclock.swf 生成的Swf文件需要flash player 9 才可以打开

4、Kclock.exe 生成的exe文件。