![]() |
in4core, ну мы поняли что ты сделал поделку которая работает только в твоих сферических условиях и не способна для поддержки сторонними разработчиками. Ну так спрячь это подальше и никому не показывай – здесь нечем хвалится: ни кодом, ни подходом, ни конечным продуктом.
|
Тут ещё в самом начале было заявлено как аксиома, что ребёнок не должен обращаться к родителю. Но если, допустим, в определённый момент объект должен удалить себя из родителя, то в любом случае прийдётся к нему обращаться, если и не напрямую, то через собственное событие, которое будет слушать родитель. Но вместо того, чтобы специально для этого создавать специальное событие, распространять его из ребёнка и ловить в родителе, не лучше ли просто перед любым обращением к родителю проверять его наличие?
Код AS3:
|
Цитата:
Ребенок НЕ ДОЛЖЕН удалять себя из родителя. И если вдруг, по каким-то неведомым причинам (которых я не могу найти для этой ситуации, кроме как Венера попала в созвездие водолея или прилетели инопланетные поработители и помутили разум творящего сие добро), ребенок вдруг оказался должен это сделать. То возвращаемся к предыдущему пункту, соглашаемся с тем что ребенок ничего не должен, и ищем проблему выше. А создавать специальных ивент не нужно. Всё, что нужно, это: Код AS3:
|
Цитата:
Изменение alpha - в public function update(), которая каждый кадр вызывается из родителя. Цитата:
Таким образом, выходит, что вместо короткого Код AS3:
А заодно подскажите, пожалуйста, как удалить родителем ребёнка, занесённого в массив? Мучался с for (var i in array), но ничего не вышло. |
Понимаете ли вы разницу между строковой константой и новым событием?
|
Цитата:
Код AS3:
|
«Нельзя затравить Мёртвого Лисёнка», холст-масло, Огюст Ренуар, 1884 ))))
*** А насчет удаления чилдренов, есть еще один вариант. Допустим есть Parent, и у него Child1 и Сhild2. Нужно по событию в Child2 удалить Child1 из DisplayList. Тогда можно завести отдельный класс и в его статическую функцию передать ссылки на экземпляры Parent и Сhild1, в которой будет parent.removeChild(child1). Такой подход тоже работает, проверено на практике. Побочных эффектов замечено не было. Судя по камментам из других тредов - этот подход менее правильный и грамотный, чем создание кастомного события. Однако почему это так плохо - мне неизвестно. Может быть тогда больше проблем с GC. |
Это плохо, потому что нарушает один из главных принципов ООП - инкапсуляцию.
Так как этих принципов всего три: инкапсуляция, наследование, полиморфизм - то нарушить один из них == пересрать треть всех понятий ООП. Три пункта запомнить и выполнять не сложно. Это понятие дисциплины, а никаких не понятий архитектуры или подходов к разработке. |
Цитата:
|
Цитата:
Но у меня есть специальный класс для собственных событий - MyEvent: Код AS3:
Всем спасибо большое за советы! |
| Часовой пояс GMT +4, время: 11:25. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.