在上一篇「AS3在Document Class和Timeline」曾探討過將AS3程式寫在時間軸的時候,Flash編譯器會自動產生了一個Dynamic Class「MainTimeline」,那如果在Flash IDE建一個「MovieClip」,並在該元件的某個影格內加上「stop()」程式,而經由Flash CS4編譯器處理後會如何呢?
Decompiling:
package test_fla { import flash.display.*; dynamic public class Timeline_1 extends MovieClip { public function Timeline_1() { addFrameScript(61, this.frame62); return; } function frame62() { stop(); return; } } }
如同上述的程式碼,在主時間軸的影格寫下AS3程式的話,Flash會產生「MainTimeline」Dynamic Class,若是在任一「MovieClip」內寫AS3程式,則會產生「Timeline_N」的Dynamic Class,而「N」整數就取決於Flash編譯器所決定的,不過我們也可以透過「getQualifiedClassName(this);」來取得該元件的類別名稱(如:Timeline_1),如此,既然知道該元件對應的類別是否就能如法泡製的複製一份呢?答案是肯定的,如下:
var rect:MovieClip = new Timeline_1(); rect.x = 100; addChild(rect);
另外值得注意的是,就算只是寫下註解的字元「//」也會產生如下的程式碼:
package test_fla { import flash.display.*; dynamic public class Timeline_1 extends MovieClip { public function Timeline_1() { addFrameScript(61, this.frame62); return; } function frame62() { return; } } }
所以可見Flash編譯器在這部份未來仍然有值得改善的空間!
這測試看起來非常有價值.
2010-11-25 16:39:55