2011-02-27 45 views
0

我有一個控制敵人的類。從該類中,它檢查主時間軸上的數組是否與之發生衝突。我之前就已經這樣做了,並且它工作正常,所以我不知道我這次做錯了什麼。它不斷給我一個爲什麼我的課不能在時間軸上看到數組?

ReferenceError: Error #1069: Property bulletArray not found on flash.display.Stage and there is no default value.

從敵人級別內的錯誤。

這裏是我的代碼(簡稱刪除不重要的部分): 在時間表:

var bulletArray:Array = new Array(); 
function shoot(e:TimerEvent) 
{ 
    var bullet:MovieClip = new Bullet(player.rotation); 
    bullet.x = player.x; 
    bullet.y = player.y; 
    bulletArray.push(bullet); 
    stage.addChild(bullet); 
} 

在類:

private var thisParent:*; 
thisParent=event.currentTarget.parent; 

private function updateBeingShot() 
     { 

      for (var i=0; i<thisParent.bulletArray.length; i++) { 
       if (this.hitTestObject(thisParent.bulletArray[i]) && thisParent.bulletArray[i] != null) { 
        health--; 
        thisParent.bulletArray[i].removeEventListener(Event.ENTER_FRAME, thisParent.bulletArray[i].enterFrameHandler); 
        thisParent.removeChild(thisParent.bulletArray[i]); 
        thisParent.bulletArray.splice(i,1); 
       } 
      } 

任何幫助將不勝感激!謝謝。

+0

您可能想要粘貼包和類聲明以及指定thisParent的事件偵聽器,以便我們可以瞭解如何設置所有內容。 – weltraumpirat 2011-02-27 23:18:14

回答

0

我的猜測是event.currentTarget是您聲明bulletArray變量的實例。使用event.currentTarget.parent將引用您範圍外的階段。我不知道你是如何宣佈聽衆的。嘗試使用event.target而不是event.currentTarget並查看是否得到相同的錯誤。

我的建議是,你把所有的代碼放在一個類中。

0

如果你打算這樣做,你需要傳遞一個對時間線的引用。

private var _timeline:Object; 

// constructor 
public function YourClass(timeline:Object) { 
    _timeline = timeline; 
} 

private function updateBeginShot() { 
    // .. 
    trace(_timeline.bulletArray); // outputs [array contents] 
    // .. 

} 
相關問題