0

当我在场景第一帧的主代码中时,我可以很好地访问 player.x 和 y 属性,但是从类 Enemy.as 我只能在构造中发送一次参数,但我没有不知道如何不断更新循环中的那些坐标。xb 和 yb 是我每次在场景中创建 Enemy 对象时作为参数发送的场景中玩家对象的坐标,但此方法只提供一次坐标。我想在每个循环中更新播放器对象的坐标,我该怎么做?我试过这条线: 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

只需将您的播放器实例传入 Enemy 而不是坐标,然后将实例保存在 Enemy 中,例如:

public class Enemy{
  private var player:Player;

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

现在在您的循环中,您应该能够通过以下方式访问玩家更新的 x 和 y 值: player.x 或 player.y 。

于 2013-03-20T08:59:30.957 回答
0

有几种方法可以解决这样的问题。我最喜欢的一个是创建一个包含所有对象的管理器类,无论是作为子对象还是其他结构、数组等。然后,为您想要了解其他实例的类提供指向管理器类的链接(或将其获取为this.parent,但这更容易出错),并调用其接口以获取您需要的任何信息。例如,Tower射击怪物的类,请求经理类在其范围内获取怪物以选择目标,或您的Enemy类搜索玩家。

于 2013-03-20T09:03:05.773 回答