个人总结:
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文件。