AS3 - ООП - наследование - PullRequest
       0

AS3 - ООП - наследование

0 голосов
/ 24 ноября 2011

У меня есть следующая структура наследования:

var environment:AvEnvironment = new AvEnvironment(...); 
addChild(environment);    
environment.addChild(new Terrain());
environment.addChild(new Player());

Я пытаюсь получить доступ к общедоступному свойству из класса AvEniroments через класс Player, однако я получаю неопределенную ошибку свойства (# 119). Я пробовал следующее:

this.x = AvEnvironment.xs // public property in this class
this.x = parent.xs

Я тоже пробовал что-то вроде этого:

var ev:AvEnvironment = AvEnvironment(parent);
this.x = ev.xs

но я получаю ошибку типа. Ошибка # 1009: невозможно получить доступ к свойству или методу пустой ссылки на объект.

1 Ответ

0 голосов
/ 24 ноября 2011

Может быть, вам стоит попробовать другой подход. Отправьте пользовательское событие из вашего класса игрока. Пусть ваша среда слушает событие. Внутри слушателя устанавливается свойство этого события. Когда событие возвращается к классу игрока, он может получить значение из события. Таким образом, ваш класс игрока может функционировать без AvEnvironment, так что это немного больше ООП.

Код в вашем классе игрока будет выглядеть примерно так:

function fetchEvXs() : Number
{
    var playerEvent:PlayerEvent = new PlayerEvent(PlayerEvent.REQUEST_XS);

    dispatchEvent(playerEvent);

    return playerEvent.xs;
}

у вашего класса Environment должен быть такой слушатель:

player.addEventListener(PlayerEvent.REQUEST_XS, onRequestXs);

function onRequestXs(e:PlayerEvent) : void
{
    e.xs = 100;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...