2010-12-08 44 views
1

我對Flash相當陌生。我有一個簡單的按鈕舞臺, Instance Nameinit。我.as腳本(MainTimeline)從階段外部訪問:「不定義的部分代碼中的變量*未定義」?

./Project/MyFlash.fla

./Project/MyFlash_fla/MainTimeline.as

我被stage財產,Class,設置爲MyFlash_fla.MainTimeline鏈接到.as。按鈕的init,標籤在屬性中設置爲「ENTER」。

但是,我遇到此錯誤:ReferenceError: Error #1065: Variable init is not defined.at MyFlash_fla::MainTimeline/__setProp_init_Scene1_Layer1_0()at MyFlash_fla::MainTimeline()。我從來沒有見過,也不是能夠找到,__setProp_init_Scene1_Layer1_0() ..

這是我當前的代碼:

function MainTimeline(){ 
     this.init.addEventListener(MouseEvent.MOUSE_UP, begin); 
    } 
    function begin(event:Event){ 
     addFrameScript(0, frame1); 
    } 

的功能很簡單;當MOUSE_UP,執行begin。一切似乎工作正常,除了提到的錯誤似乎導致加載我設置在屬性中的預設一些問題。標籤,而不是ENTER,因爲我已經設置它,更改爲Label,好像我沒有設置它。我認爲這與該錯誤有關,但我不知道如何訪問該區域或如何解決此問題。看起來目前似乎合理的解決方法是在代碼中設置標籤,我不希望這樣做,因爲我計劃包括更多的按鈕,複選框等等,這將成爲一個麻煩。任何人有任何想法如何解決這個問題?

+0

只是FYI:「無法訪問的代碼」通常意味着永遠無法執行的代碼,而不是您無法找到源代碼的代碼。 – 2010-12-08 01:15:50

+0

我知道。我猜想,措辭衝突,但這是首先想到的第一個描述。編輯。 :) – Salt 2010-12-08 01:20:31

回答

0

這意味着你的「init」實例沒有實例化,__setProp_init_Scene1_Layer1_0()是幕後代碼,不用擔心這一點。

您可能不得不宣告初始化變量

 //assuming your button is a MovieClip 
    private var init:MovieClip; 

    function MainTimeline() 
    { 
     init.addEventListener(MouseEvent.MOUSE_UP, begin); 
    } 

或者,而不是將其直接添加到舞臺,在屬性使用「爲ActionScript導出」將其鏈接到自己的類面板&添加它在代碼方面。我通常更喜歡這種方法,因爲它可以讓您更好地控制顯示對象。當然,因爲它沒有添加到舞臺上,所以不需要實例名稱!

 private var button:MovieClip = new init(); 

    function MainTimeline() 
    { 
     button.addEventListener(MouseEvent.MOUSE_UP, begin); 
    } 

在一個側面說明,「初始化」可能不是一個按鈕的最好的名字,因爲它是在類的方法名經常使用...

0

對於其他讀者,上述錯誤可能意味着你需要去

  • 文件/發佈設置/ AS3.0設置(看起來像在上 右扳手)

和則s等「自動聲明階段實例」複選框進行檢查。另外,取消選擇「嚴格模式」,以防萬一它被選中並且文件繼續產生錯誤。