![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
in4core, ну мы поняли что ты сделал поделку которая работает только в твоих сферических условиях и не способна для поддержки сторонними разработчиками. Ну так спрячь это подальше и никому не показывай – здесь нечем хвалится: ни кодом, ни подходом, ни конечным продуктом.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Регистрация: Oct 2013
Сообщений: 126
|
Тут ещё в самом начале было заявлено как аксиома, что ребёнок не должен обращаться к родителю. Но если, допустим, в определённый момент объект должен удалить себя из родителя, то в любом случае прийдётся к нему обращаться, если и не напрямую, то через собственное событие, которое будет слушать родитель. Но вместо того, чтобы специально для этого создавать специальное событие, распространять его из ребёнка и ловить в родителе, не лучше ли просто перед любым обращением к родителю проверять его наличие?
|
|
|||||
|
Цитата:
Ребенок НЕ ДОЛЖЕН удалять себя из родителя. И если вдруг, по каким-то неведомым причинам (которых я не могу найти для этой ситуации, кроме как Венера попала в созвездие водолея или прилетели инопланетные поработители и помутили разум творящего сие добро), ребенок вдруг оказался должен это сделать. То возвращаемся к предыдущему пункту, соглашаемся с тем что ребенок ничего не должен, и ищем проблему выше. А создавать специальных ивент не нужно. Всё, что нужно, это:
__________________
Кто к нам с чем для чего - тот у нас того от того. |
|
|||||
|
Регистрация: Oct 2013
Сообщений: 126
|
Цитата:
Изменение alpha - в public function update(), которая каждый кадр вызывается из родителя. Цитата:
Таким образом, выходит, что вместо короткого в ребёнке, нужно будет создавать специальный класс для событий (событий детей этого родителя, например), из ребёнка распространять событие "папа, я умер", а в родителе слушать это событие, чтобы отреагировать и "убрать бездыханное тело" (прошу прощения за мрачные метафоры). "Так длиннее, но правильней?" А заодно подскажите, пожалуйста, как удалить родителем ребёнка, занесённого в массив? Мучался с for (var i in array), но ничего не вышло. |
|
|||||
|
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Цитата:
Эта строчка не обязывает создавать не какие классы, она говорит лишь о том, что Вам необходимо почитать про события, так как Вы не знаете основ. А удалять ребёнка можно как event.target поймав событие. |
|
|||||
|
Регистрация: Mar 2013
Сообщений: 290
|
«Нельзя затравить Мёртвого Лисёнка», холст-масло, Огюст Ренуар, 1884 ))))
*** А насчет удаления чилдренов, есть еще один вариант. Допустим есть Parent, и у него Child1 и Сhild2. Нужно по событию в Child2 удалить Child1 из DisplayList. Тогда можно завести отдельный класс и в его статическую функцию передать ссылки на экземпляры Parent и Сhild1, в которой будет parent.removeChild(child1). Такой подход тоже работает, проверено на практике. Побочных эффектов замечено не было. Судя по камментам из других тредов - этот подход менее правильный и грамотный, чем создание кастомного события. Однако почему это так плохо - мне неизвестно. Может быть тогда больше проблем с GC. |
|
|||||
|
Это плохо, потому что нарушает один из главных принципов ООП - инкапсуляцию.
Так как этих принципов всего три: инкапсуляция, наследование, полиморфизм - то нарушить один из них == пересрать треть всех понятий ООП. Три пункта запомнить и выполнять не сложно. Это понятие дисциплины, а никаких не понятий архитектуры или подходов к разработке.
__________________
Кто к нам с чем для чего - тот у нас того от того. |
|
|||||
|
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Цитата:
|
|
|||||
|
Регистрация: Oct 2013
Сообщений: 126
|
Цитата:
Но у меня есть специальный класс для собственных событий - MyEvent: // класс для собственных событий package RC { import flash.events.Event public class MyEvent extends Event{ public var score:int; public var tar:uint; public static const GAME_OVER:String='GAME_OVER'; public static const GAME_START:String = 'GAME_START'; public static const BACK_TO_MENU:String = 'BACK_TO_MENU'; public static const TRANSITION:String='TRANSITION'; // CONSTRUCTOR (type) public function MyEvent(type:String, t:uint = 0, s:uint = 0) { super(type) tar = t; score = s; }; }; }; Всем спасибо большое за советы! |
![]() |
![]() |
Часовой пояс GMT +4, время: 18:22. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| видимость , классы , композиция , методы , свойства |
|
|