原始檔為 static_test.fla,Document Class 為 static_test.as。
MySym 為元件,其連結的類別為 MySym.as。
MyClass.as 為非視覺物件的類別。
static_test.as
package { import flash.display.MovieClip; { trace('m1'); } public class static_test extends MovieClip { { trace('m2'); }; public function static_test() { trace(this); } { trace('m3'); } } { trace('m4'); } }MySym.as
package { import flash.display.MovieClip; import MyClass; // import 並沒有載入類別 { trace('s1'); } public class MySym extends MovieClip { { trace('s2'); MyClass + ''; // 為了載入類別 } public function MySym() { trace(this); } { trace('s3'); } } { trace('s4'); } }
package { { trace('c1'); } public class MyClass { { trace('c2'); } public function MyClass() { trace(this); } { trace('c3'); } } { trace('c4'); } }結果為:
s2
c2
c3
c1
c4
s3
s1
s4
m2
m3
m1
m4
[object static_test]
由結果可知:
1. Symbol 所連結的類別要比 Document class 先載入。
2. Initialization blocks 寫在相同的類別檔時,屬於類別的先執行,屬於 package 者則較慢執行。
3. Import 無法讓類別載入,只有在使用到該類別時,類別才會被載入。
另外,使用 Flash CS5 時,類別在編譯至 SWF 裡前應該有被 Flash CS5 修改過。使得在 Initialization block 裡宣告的變數無法使用,變通的方式是將變數宣告為類別的 static 變數。
沒有留言:
張貼留言