2010-09-22 65 views
1

在函數hitWall中,hitTestObject在玩家擊中牆時正在工作。我在閃光舞臺上有牆壁,命名爲wall,wall2,wall3,wall4。使用相同的概念,我放置了其他影片剪輯(樹)並命名它們:tree1,tree2等....等等。hitTestObject(AS3)錯誤:訪問未定義的屬性

我收到一條錯誤消息:訪問未定義的屬性樹。

wall.addEventListener(Event.ENTER_FRAME, hitWall); 
tree.addEventListener(Event.ENTER_FRAME, hitTree); 

// function hitWall -------------------------------------------------------------- 
    function hitWall(event:Event):void { 
     if (player_ary[me].hitTestObject(wall)) { 
       player_ary[me].y+=6; 
      } else if (player_ary[me].hitTestObject(wall2)) { 
       player_ary[me].y-=6; 

      } else if (player_ary[me].hitTestObject(wall3)) { 
       player_ary[me].x+=6; 

      } else if (player_ary[me].hitTestObject(wall4)) { 
       player_ary[me].x-=6; 
      } 

    } 

    // function hitWall -------------------------------------------------------------- 
    function hitTree(event:Event):void { 
     if (player_ary[me].hitTestObject(tree)) { 
       player_ary[me].y+=6; 
      } else if (player_ary[me].hitTestObject(tree2)) { 
       player_ary[me].y-=6; 
      } else if (player_ary[me].hitTestObject(tree3)) { 
       player_ary[me].x+=6; 
        } 
    } 

回答

0

如果問題是什麼,我認爲這是...

的問題是,當你有一個類或類似這樣定義的函數...

{ 
    var wall:Object = {name:"dodo"}; 
    wall.addEventListener(Event.ENTER_FRAME,doThis) 
    function doThis(event:Event):void{ 
     trace (wall.name); 
    } 
} 

壁實際上是空的。 整個功能被稱爲你定義的功能的上下文之外。

你需要做的是測試e.target(它將返回牆對象,因爲這是你添加事件的地方監聽器),或者添加其他事件監聽器,並使用類變量(即公共變種一個:INT)

這與人們AS2切換的一個常見問題,以AS3

1

的錯誤指示樹動畫片段null,所以問題不在於你的代碼的這一部分。

如果樹MovieClip意圖是添加到舞臺的樹的實例,請確保實例在調用其方法之前存在。