原始檔為 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.aspackage {
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 變數。
沒有留言:
張貼留言