Почему мой класс не может видеть массив на временной шкале? - PullRequest
0 голосов
/ 28 февраля 2011

У меня есть класс, который контролирует врага.Внутри этого класса он проверяет наличие коллизий с массивом на главной временной шкале.Я делал это раньше, и это прекрасно работает, поэтому я не знаю, что я сделал не так на этот раз.Он продолжает выдавать мне

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 голосов
/ 28 февраля 2011

Если вы собираетесь сделать это таким образом, вам нужно передать ссылку на временную шкалу.

private var _timeline:Object;

// constructor 
public function YourClass(timeline:Object) {
    _timeline = timeline;
}

private function updateBeginShot() {
    // ..
    trace(_timeline.bulletArray); // outputs [array contents]
    // ..

}
0 голосов
/ 28 февраля 2011

Я предполагаю, что event.currentTarget - это экземпляр, где вы объявили переменную bulletArray.Использование event.currentTarget.parent будет ссылаться на этап за пределами вашей области видимости.Я не знаю, как вы объявляете слушателей.Попробуйте использовать event.target вместо event.currentTarget и посмотрите, не возникает ли такая же ошибка.

Мой совет, чтобы вы поместили весь свой код в класс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...