|
|
|||||
Lorem ipsum
|
ну это вряд ли ) быстрее/удобнее не будет.
__________________
Поймай яблоко 2! |
|
|||||
.
|
Уточните, ищется корневой элемент (аналог DisplayObject#stage) или непосредственный родитель (аналог DisplayObject#parent)? В первом случае нет необходимости хранить ссылку на корень. Ссылка на корень будет только в самом корне. В элементах она легко извлекается последовательным вызовом parent'ов на каждом уровне вложенности. У последнего проверяется ссылка на корень (this.stage, this.root). Если последний и есть корневой узел, то он вернет самого себя. Ну, а ссылку непосредственного парента придется сохранить в каждом объекте.
|
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Реализация какого нибудь GoF Composite, не?
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
ветеран форума
|
dimarik, упрощенно выглядит так:
// на самом деле структура более глубокая и ветвистая. // это для наглядности class NodeVO { public var nodes:/*NodeVO*/Array; } var rootNode:NodeVO = new NodeVO(); var childNode:NodeVO = new NodeVO(); var deepChildNode:NodeVO = new NodeVO(); childNode.values.push(deepChildNode); rootNode.values.push(childNode); Честно, даже не в курсе что это такое (хотя GoF читал когда-то выборочно). Я не особо по терминологии. Почитав про всякого рода поиски и обходы деревьев в глубину и ширину пришел к выводу что втюхивания ссылок на паренты в данном случае будет достаточно и более шустро, т.к. предполагается частенько и быстренько искать родителей у произвольных узлов.
__________________
trace("Остановите Землю, я сойду!!!"); |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Ну например DisplayList по Composite`у построено.
Суть в том что любой объект созданный делать addChild - а потом можно тянуть свойство parent. Та же передача ссылок, но более удобная, что-ли.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
ветеран форума
|
dimarik, Psycho Tiger, не понимаю. Имеется ввиду в методе addChild присваивать ссылку на родителя?
Практически так и сделано сейчас (только не в addChild, но суть та же). Просто не хотелось мне изначально держать ссылки на родителей, но пришлось.
__________________
trace("Остановите Землю, я сойду!!!"); |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
А по другому никак и не получится.
Это можно просто скрыть от глаз. Тебя (мы ведь на ты, я уже забыл?) ведь напрягает просто громоздкость конструкции? Вся суть в сокрытии реализации этих ненужных передач parent явно. Как в DisplayList, тебя ведь не напрягает явно добавять ноды - это скорее помогает. А потом можно спокойно брать parent, а ощущения громоздкости нету.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
ветеран форума
|
По другому это обходить все узлы дерева от корня пока не наткнемся на совпадение с искомым узлом, но это долго и в данном случае не оправданно.
Я ради спортивного интереса хотел это сделать, запутался в рекурсиях и полез на форум в поисках светлых голов. У меня психологический дискомфорт был вначале, сейчас попустило P.S. Конечно на "ты". P.P.S. Еще раз всем спасибо.
__________________
trace("Остановите Землю, я сойду!!!"); Последний раз редактировалось Mur4ik; 29.11.2010 в 00:50. |
Часовой пояс GMT +4, время: 04:17. |
|
« Предыдущая тема | Следующая тема » |
|
|