2017-06-28 59 views
0

我正在編寫代碼讓敵人檢測到與玩家的碰撞。在我的Enemy類中,我有以下內容: import flash.display.MovieClip; import flash.events.Event;Adob​​e動畫ActionScript 3錯誤1009用於MovieClip

public class Enemy extends MovieClip { 
    var Player: MovieClip; 
    public function Enemy() { 
     this.addEventListener(Event.ENTER_FRAME, EnemyUpdate); 

    } 
    function setPlayer(_Player: MovieClip) { 
     Player = _Player; 
    } 
    function EnemyUpdate(_event: Event) { 
     var enemyHit: Boolean = this.hitTestObject(Player.Character.Legs); 
     if (enemyHit) { 
      trace("OUCH!!"); 
     } 
    } 

} 

在我的主類,我嘗試使用播放器影片剪輯發送到敵對階級腳本如下:

public function Main() { 
     enemy.setPlayer(player); 
    } 

影片剪輯敵人有連接到它的敵人腳本。當我運行該程序時,Player變量爲null。我如何讓播放器識別播放器MovieClip?

回答

0

發生這種情況是因爲您在實例化了敵人之後設置了您的播放器。在Enemy構造函數中,你有EnterFrame監聽器。要修復錯誤,請將您的代碼更改如下:

public function Enemy() { 
    // empty constructor, you can remove it if there is no other logic in it 

} 
function setPlayer(_Player: MovieClip) { 
    Player = _Player; 
    // the Player variable is not null anymore. 
    this.addEventListener(Event.ENTER_FRAME, EnemyUpdate); 
}