2016-04-02 30 views
0

私はactionscript 3の初心者です。それにもかかわらず、私は痛みを和らげるためにFlashPunkを使用しています。Actionscript 3で条件付きで条件付きでエンティティを追加する

ワールドクラスを拡張するマイレベルでは、コンストラクタがPlayerとEnemyの2つのエンティティを追加します。 Enemyエンティティのインスタンスを追加したり、キーの入力でプレイヤーを削除して再追加したり(健康状態と位置をリセットするため)したいと考えています。私はLevel.as

public function Level() 
    { 
     if (Input.pressed("Reset")) 
     { 
      add(new Enemy()); 
      add(new Player()); 
     } 
    } 

に従うことによって、Main.as

続い
Input.define("Reset", Key.R); 

に次のようにしようとすると、直感的に、私はそれが動作するはずだと思うとき何の全体の多くは、発生します。エンティティのインスタンスを生成する際に何かが欠けていますか?

+0

「レベル」が作成されているときに、「リセット」を1回だけ押しているかどうかを確認しているため、これは機能しません。 Buttonプレスに反応するために、ENTER_FRAMEハンドラを実行するか、タイマを実行させることができます。これら両方の方法では、ボタンを押したときにインターバルをチェックインします(あなたのswfの各フレームのENTER_FRAME、タイマーの中の任意のもの)。それに応じて反応します。 – DodgerThud

+0

@DodgerThud私はENTER_FRAMEハンドラについて読みましたが、見た目には未定義のメソッドなので、リスナーを追加できないようです。 –

答えて

0

私は自分自身の解決策を見つけましたが、他の人たちが同じことをやっているかどうかは分かっています。 私はFlashPunkライブラリを使用しているので、私はtweensにアクセスできます。私のゲームは60FPSで動いているので、私はこのレベルで.0167の期間を使って、フレームごとにキープレスを確認しました。コードは、クラスで始まる次のとおりです。

public class Level extends World 
{ 

    public function Level() 
    { 
     var resetCheck:Tween = new Tween(.0167, Tween.LOOPING, reset); 
     addTween(resetCheck,true) 
     trace("World init");    
    } 
    public function reset() 
    { 
     if (Input.pressed("Reset")) 
     { 
      removeAll(); 
      add(new Player()); 
      add(new Enemy()); 
      trace("RESET!!!"); 
     } 
     if (Input.pressed("Spawn Enemy")) 
     { 
      add(new Enemy()); 
     } 
    } 

}