为什么我的班级不能在时间轴上看到数组?

时间:2011-02-27 22:59:11

标签: actionscript-3

我有一个控制敌人的课程。在该类中,它检查与主时间轴上的数组的冲突。我之前已经这样做了,它工作正常,所以我不知道这次我做错了什么。它不断给我一个

  

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);
                }
            }

任何帮助将不胜感激!感谢。

2 个答案:

答案 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]
    // ..

}