![]() |
Почему нельзя обратится к объекту на сцене через this.parent из подкласса?
Здравствуйте.
Почему я не могу обратится к символу на сцене допустим с идентификатором clip_mc, скажем из спрайта созданного в классе документа, через this.parent. При попытках мне возвращается ошибка: "Обращение к возможно не определенному свойству clip_mc в...". Из самого документ класса (this.clip_mc) можно обращаться сколько угодно. Почему так? |
потому что только класс знает что в нем лежит clip_mc, обращайтесь через this.parent.getChildByName("clip_mc");
вообще так делать не стоит. |
Спасибо за информацию.
Цитата:
|
не должны дети знать своего родителя - нарушается принцип инкапсуляции и вообще ООП
|
с этим согласен, но с другой стороны не понятно а зачем ввели эти переменные?
|
При чем здесь инкапсуляции и ООП ? (если это было так, parent был бы закрытым членом DisplayObjectContainer)
По-моему, нарушается принцип событийной модели и всего лишь... |
parent оставили открытым в угоду не-тру ООП программистам)
Я, например, практически нигде-никогда не использовал parent - не было необходимости..(из этого, правда, совсем не следует, что я тру ООП-программист))) объект должен быть как чёрный ящик - ничего кроме себя не знать, а когда логика объекта завязана на его использование это не есть гуд. типа: "если меня положат на диван - то я сплю, а если меня положили в гроб, то я умер)))" а что за принцип событийной модели? |
Что-то типа:
http://www.flasher.ru/forum/showthread.php?t=129557 Цитата:
|
Цитата:
Цитата:
Цитата:
|
На самом деле если класс предоставляется только в 100% связке с другим классом и никаким другим, то parent использовать допустимо, хотя даже там лучше диспатчить событие.
Ещё момент - что события работают медленнее чем инлайновый вызов метода, так что в особо критичных местах можно и воткнуть parent, если критически нужна оптимизация. |
Цитата:
|
Дёргать можно по разному, классы писать тоже. Миникод накидайте, чтобы была видна логика работы - я скажу.
|
Код AS3:
|
Цитата:
main.xmlLoader - грузит XML сообщает об этом в main. main обновляет инфу на страницах. Или при переключениях страниц main устанавливает текущую страницу (видимостями или всякими твинами не важно) и передаёт нужную часть xml текущей странице. Или при переключении страниц main устанавливает текущую страницу (видимостями или всякими твинами не важно) даёт команду xmlLoader-у загрузить xml и после загрузки передаёт её на текущую страницу. Или если использовать MVC - main (контроллер) подписывает страницы (виды) на изменение модели (id=текущая страница/ xml =данные) есть еще например кнопки меню - тоже виды - которые диспетчат события о переключении. контроллер меняет модель (id) виды при изменении текущей страницы переключаются (вернее их переключает переключатель страниц - который тоже может быть видом или составным) xmlLoader можно рассматривать в 2 ипостасях. как часть контроллера - он инициирует загрузку xml и изменяет данные модели (xml). либо сделать его тоже видом, который a) - слушает изменение модели (id) б) в ответ на a) загружает xml и вещает о загрузке. контроллер в этом случае слушает это событие и изменяет модель (xml) на это изменение подписаны страницы и соответственно изменяют своё состояние. ..итд итп. в общем способов куча и совершенно не обязательно страницам знать о каком то Главном классе. Кроме того можно передать ссылку, например, на данные. в случае MVC при инициализации Видов страниц можно им передавать ссылку на модель. Виды самостоятельно могут подписываться на изменение модели и/или брать оттуда данные. в вашем примере в качестве такой модели может выступить класс Content Код AS3:
|
Понятно, спасибо.
|
| Часовой пояс GMT +4, время: 20:53. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.