2017-06-28 58 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); 
}