2017-06-28 4 views
0

私は、敵がプレーヤーとの衝突を検出するコードを書いています。私の敵のクラスでは、私は次のものを持っています: import flash.display.MovieClip; import flash.events.Event;私のメインクラス内Adob​​e ActionScript 3.0のアニメーションアニメーションクリップのエラー1009

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!!"); 
     } 
    } 

} 

、私は以下を使用して敵クラススクリプトにプレーヤーのMovieClipを送信しよう:

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

のMovieClipの敵は、それに接続された敵のスクリプトを持っています。プログラムを実行すると、Player変数はnullです。 Player MovieClipを認識させるにはどうすればよいですか?

答えて

0

これは、敵がインスタンス化された後にプレイヤーを設定したために発生します。敵のコンストラクターには、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); 
} 
関連する問題