2012-03-16 152 views
-2

彈出此錯誤:錯誤#1009:無法訪問空對象引用的屬性或方法。在test9_fla :: MainTimeline/PlayerMovement()Flash中的AS3錯誤#1009

這裏是我的代碼:

stage.addEventListener(Event.ENTER_FRAME,PlayerMovement);

功能PlayerMovement(事件:事件){

if(down) { 
    Jack.y += speed; 
    if(Jack.hitTestObject(Muur1)) 
    { 
     Jack.y -= speed; 
    }}else if(up) 
{ 
    Jack.y -= speed; 
    if(Jack.hitTestObject(Muur1)) 
    { 
     Jack.y += speed; 
    }}else if(left) 
{ 
    Jack.x -= speed; 
    if(Jack.hitTestObject(Muur1)) 
    { 
     Jack.x += speed; 
    }}else if(right) 
{ 
    Jack.x += speed; 
    if(Jack.hitTestObject (Muur1)) 
    { 
     Jack.x -= speed; 
    }} 

我怎麼能解決這個錯誤嗎?

+1

通過調試器運行它,並確切地看到問題出在哪裏。這可能是因爲所使用的變量之一未啓動。 – 2012-03-16 11:53:03

+0

@Feia因爲'down'沒有被定義爲 – mgraph 2012-03-16 12:24:48

+0

-1,因爲代碼非常糟糕。我很難說,有一個if語句和其他三個if語句。另外,使用調試器。 – mfa 2012-03-18 06:38:26

回答

0

最有可能的stage未定義,您需要等待onAddedToStage事件。但是你爲什麼直接進入舞臺呢?您不需要,您可以簡單地將您的事件偵聽器添加到當前的影片剪輯(在您的情況下最有可能是文檔根目錄)。

addEventListener(Event.ENTER_FRAME, PlayerMovement); 
+0

由於它可能是一款遊戲,因此擁有多個ENTER_FRAME處理程序通常是一個糟糕的主意。儘管完全放棄ENTER_FRAME並改用Timer事件會更好。 – joncys 2012-03-16 12:55:14