2015-03-31 118 views
-1

我不知道爲什麼它一直說錯誤1009!?AS3錯誤1009空對象

下面的代碼

import flash.events.Event; 

    var mysound:Sound = new Avondbos(); 
    var channel1:SoundChannel = mysound.play(); 


    start.addEventListener (MouseEvent.CLICK, veeg); 
    start.buttonMode = true; 

    function veeg (e:Event):void 
    { 
     maan.gotoAndPlay("2"); 
     start.gotoAndPlay("2"); 
     headphone.gotoAndPlay("2"); 
     rupsje.gotoAndPlay("2"); 
    } 

    maan.land.blad.addEventListener (MouseEvent.CLICK, klikblad); 
    maan.land.blad.buttonMode = true; 

    function klikblad(e:Event):void 
    { 
     if (maan.land.blad.currentFrameLabel == "halfblad") 
     Object(root).gotoAndStop(1, "Cocon2"); 
    } 

    maan.land.blad.addEventListener (MouseEvent.CLICK, klikblad2); 

    function klikblad2(e:Event):void 
    { 
     maan.land.blad.gotoAndPlay("130"); 
     rupsje.gotoAndPlay("293"); 
}  

錯誤:

TypeError: Error #1009: Cannot access a property or method of a null object reference. 
at Project_550690_Robin_Janssen_fla::MainTimeline/klikblad2() 

不能找出我做錯了和Flash沒有任何幫助。

由於提前,

羅賓

+0

我認爲你是新的在stackoverflow,所以歡迎。着名的#1009錯誤!所以在這裏,編譯器在你的'klikblad2'函數中談論一個空對象,所以你可以做的是去那個函數並驗證你的對象:很簡單,你有兩行,禁用第一個,如果你仍然得到錯誤,所以空對象位於第二行,否則,它處於禁用狀態!祝你好運 ! – akmozo 2015-03-31 20:48:23

+0

你好! 錯誤在兩行中的第一行。 但是我應該改變什麼? 如果我禁用該行,它將不會像它應該執行的那樣運行。 – Ruben 2015-03-31 21:55:23

+0

好吧,請確認這一行,但爲什麼您在'maan.land.blad'對象上爲同一個'MouseEvent.CLICK'附加了兩個偵聽器?你只能使用一個!並在處理程序中,您可以使用'e.target'而不是'maan.land.blad'。 – akmozo 2015-03-31 22:06:25

回答

0

錯誤1009當你試圖訪問的東西,不存在發生。

所以,當用戶點擊時,它會移動到另一個框架,但如果用戶再次點擊它將無法執行,因爲代碼將不再存在。由於返回的錯誤,我們可以看到你的程序正試圖訪問函數'klikblad2()',當它不存在於該幀(但它以前的幀)上。

我建議增加:

whateverTheTargetIs.removeEventListener(MouseEvent.CLICK, eventNameHere); 

向所有的函數去到另一個幀中的代碼不會是結束。這將解決你的問題,因爲它不會再聽取點擊意味着它不會嘗試訪問一個不存在的(在該框架上)函數;所以它不會返回任何錯誤。

對不起,如果這看起來很複雜或很難理解,只是說如果你仍然困惑。

+0

修正了它。謝謝! – Ruben 2015-04-01 10:10:53

+0

很高興我能幫到你。 – gacl 2015-04-01 13:12:33

0

好的。修復!

我改變了功能的順序。

maan.land.blad.addEventListener(MouseEvent.CLICK, klikblad2); 
maan.land.blad.buttonMode = true; 

function klikblad2(e: Event): void { 
    if (maan.land.blad.currentFrameLabel == "heelblad") 
    maan.land.blad.gotoAndPlay("130"); 
    rupsje.gotoAndPlay("293"); 
} 

maan.land.blad.addEventListener(MouseEvent.CLICK, klikblad); 
maan.land.blad.buttonMode = true; 

function klikblad(e: Event): void { 
    if (maan.land.blad.currentFrameLabel == "halfblad") 
    this.gotoAndStop(1, "Cocon2"); 
} 
相關問題