我有一个控制敌人的课程。在该类中,它检查与主时间轴上的数组的冲突。我之前已经这样做了,它工作正常,所以我不知道这次我做错了什么。它不断给我一个
来自敌人阶层的错误。ReferenceError:错误#1069:属性 bulletArray未找到 flash.display.Stage并没有 默认值。
这是我的代码(缩短以删除不重要的部分): 在时间表上:
var bulletArray:Array = new Array();
function shoot(e:TimerEvent)
{
var bullet:MovieClip = new Bullet(player.rotation);
bullet.x = player.x;
bullet.y = player.y;
bulletArray.push(bullet);
stage.addChild(bullet);
}
课堂上:
private var thisParent:*;
thisParent=event.currentTarget.parent;
private function updateBeingShot()
{
for (var i=0; i<thisParent.bulletArray.length; i++) {
if (this.hitTestObject(thisParent.bulletArray[i]) && thisParent.bulletArray[i] != null) {
health--;
thisParent.bulletArray[i].removeEventListener(Event.ENTER_FRAME, thisParent.bulletArray[i].enterFrameHandler);
thisParent.removeChild(thisParent.bulletArray[i]);
thisParent.bulletArray.splice(i,1);
}
}
任何帮助将不胜感激!感谢。
答案 0 :(得分:0)
我的猜测是event.currentTarget是你声明bulletArray变量的实例。使用event.currentTarget.parent将引用范围之外的阶段。我不知道你是如何声明听众的。尝试使用 event.target 而不是 event.currentTarget ,看看是否收到同样的错误。
我的建议是你把所有的代码放在一个类中。
答案 1 :(得分:0)
如果你打算这样做,你需要传递对时间线的引用。
private var _timeline:Object;
// constructor
public function YourClass(timeline:Object) {
_timeline = timeline;
}
private function updateBeginShot() {
// ..
trace(_timeline.bulletArray); // outputs [array contents]
// ..
}