Actionscript 3 actionscript中的全局位置问题

Actionscript 3 actionscript中的全局位置问题,actionscript-3,flash,class,flash-cs5,point,Actionscript 3,Flash,Class,Flash Cs5,Point,我正在研究一些敌人的AI,我希望他们每隔一段时间根据计时器转向玩家。所有的代码都是充实的,但是我使用了多个独立的类,我很难让玩家成为敌人AI可以访问的全局点 我写道: public var playerGlobalPos:Point = localToGlobal(new Point(PlayerTank.x, PlayerTank.y)) 但这会不断显示以下错误消息: 1119:通过静态类型类的引用访问可能未定义的属性y 我不确定我是否可以像那样引用敌方类中的变量playerGlobalPo

我正在研究一些敌人的AI,我希望他们每隔一段时间根据计时器转向玩家。所有的代码都是充实的,但是我使用了多个独立的类,我很难让玩家成为敌人AI可以访问的全局点

我写道:

public var playerGlobalPos:Point = localToGlobal(new Point(PlayerTank.x, PlayerTank.y))
但这会不断显示以下错误消息:

1119:通过静态类型类的引用访问可能未定义的属性y


我不确定我是否可以像那样引用敌方类中的变量playerGlobalPos,让代码jsut识别它,但有些东西告诉我它行不通。我不熟悉多类编程,因此让变量传递到其他类会给我带来一些麻烦。

显然,您的
PlayerTank
是一个类名,而不是一个对象(实例)名。想象你的玩家控制两辆坦克,应该使用哪一辆的X和Y?因此,你的敌人应该能够以某种方式到达玩家的坦克实例。虽然只有一名玩家和一辆坦克,但最好的学习方法是为您的AI类使用静态var

public static var player:PlayerTank;
在创建战场时,将其与玩家实例一起分配一次,因为它是放置所有AI、玩家、障碍物等的地方,然后在AI例程中引用它。这样的
playerGlobalPoint
var也可以是静态的,但是请注意,如果可能的话,应该定期更新其X和Y,而不调用
new Point()
。调用
localToGlobal()
仍然会在每次调用中创建一个
对象,但可以避免创建两个