0

シーンの最初のフレームにあるメイン コードにいるときは、player.x および y プロパティに問題なくアクセスできますが、クラス Enemy.as からは、パラメーターを構築中に 1 回しか送信できませんが、ループ内のこれらの座標を常に更新する方法がわかりません。xb と yb は、シーンに敵オブジェクトを作成するたびにパラメーターとして送信したシーン上のプレイヤー オブジェクトの座標ですが、このメソッドは座標を 1 回しか与えません。各ループでプレイヤー オブジェクトの座標を更新したいのですが、どうすればよいですか? trace("this.parent.player.x") という行を試しましたが、うまくいきません。

    public function Enemy(xLocation:int, yLocation:int, xb, yb) {
        // constructor code
        x = xLocation;
        y = yLocation;
        addEventListener(Event.ENTER_FRAME, loop);
        xa = xb;
        ya = yb;
    }

    public function loop(e:Event):void {

            x -= xSpeedConst;
            trace(this.x);
            trace (xa + " " + ya);

    }

どんな助けでも大歓迎です...

4

2 に答える 2

0

座標の代わりにプレーヤーインスタンスを敵に渡してから、インスタンスを敵の内部に保存します。たとえば、次のようになります。

public class Enemy{
  private var player:Player;

  public function Enemy(xLocation:int, yLocation:int, playerParam){
    player = playerParam;
  }
}

これでループ内で、player.xまたはplayer.yと言うことで、プレーヤーの更新されたx値とy値にアクセスできるようになります。

于 2013-03-20T08:59:30.957 に答える
0

このような問題にはいくつかのアプローチがあります。私が最も気に入っているのは、すべてのオブジェクトを子または他の構造体、配列などとして含むマネージャー クラスを作成することです。次に、他のインスタンスを認識したいクラスに、マネージャー クラスへのリンクが与えられます (またはとして取得しますthis.parentが、これはエラーが発生しやすくなります)、そのインターフェイスを呼び出して、必要な情報を取得します。たとえば、Towerモンスターを撃つクラス、ターゲットを選択するためにマネージャークラスに範囲内のモンスターを取得するように要求するクラス、またはEnemyプレイヤーを検索するクラス。

于 2013-03-20T09:03:05.773 に答える