|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Mar 2013
Сообщений: 290
|
Доступ к экземплярам составного экземпляра
Всем привет.
В библиотеке есть составной мувиклип Clipdriver, который состоит из: - рамки Frame - области проигрывания мувиклипа Container, - контейнера кнопок Buttonholder, - кнопок управления: Button1, Button2, размещенных в этом Buttonholder'е. Есть также три мувиклипа, которые должны проигрываться этим Clipdriver'ом. Все вышеперечисленные объекты пролинкованы галочкой к одноименным классам. Однако, каждый класс присутствует в виде .as файла, поэтому они не dynamic. Опираясь на Третью Заповедь Wolsh'a, согласно которой, детям нельзя дергать родителей, я решил избежать употребления слушателей в кнопках Button1, Button2 (например, посредством хитрого обращения вверх типа this.parent.parent или там this.root, и т.п.) и решить эту проблему иначе. Заморочка1: Я не знаю как толком "иначе". Поэтому решил сделать вот как: создать внутри класса Clipdriver универсальный слушатель, который работает так: this.addEventListener(MouseEvent.CLICK, clipdriverHandler); private function clipdriverHandler(e:Event) { //здесь отлавливаем нажатие на кнопки, например с помощью //e.target.parent, для того чтобы передать экземпляру Container } То есть, когда мы создаем его посредством кода, тут всё легко. Но вот когда он формируется сам, потому что является частью более сложного экземпляра, то возникает непонимание. Нет, я конешно могу его узнать посредством trace, там будет что-то типа instance6, но это на уровне самого класса Container. А как его передать вверх? Ведь это ересь и анафема. Сначала я подумал, что можно провернуть вот такой финт: в классе Container ввести строку: и уже по имени отловить его в методе выше. Однако - неприятный сюприз, этот способ выдает ошибку: Цитата:
(Вот щас подумал, может быть тут как-то статические свойства/методы использовать). И наконец, третья идея: попробовать отловить событие ДОБАВЛЕНИЯ ЭКЗЕМПЛЯРА В ЭКЗЕМПЛЯР, и уже из него выцепить нужные имена. Однако, я не знаю есть ли вообще такое? Генерирует ли оператор: некое событие? Но тут опять проблема в том, что экземпляр Clipdriver является собранным в библиотеке, и даже если такие события происходят, то неявно. Короче, что-то я запутался в этом разнообразии, прошу подсказок в любых направлениях. А то начинаешь невольно приходить к выводам, что вот такие многовложенные формации нужно делать исключительно кодом. То есть вбивая координаты каждого объекта по отношению к другому, юзать каскады addChild'ов и т.п. А это более муторно. Всё-таки собрать в редакторе нужный объект посредством визуальных инструментов как-то проще и приятнее. Последний раз редактировалось Fogflasher; 03.11.2013 в 00:44. |
|
|||||
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Clipdriver.getChildAt() или Clipdriver.getChildByName() - так можно к детям обратится.
А про события внутри элемента из адобафлеш.. Если бы меня препёрло когда нибудь, что то в нём нарисовать, то слушателей я бы там не делал. Мне кажется, лучше при помощи тех же методов, что я написал выше, присвоить ссылки переменным в классе и уже в самом классе и слушателей создавать. |
|
|||||
[+4 08.09.13]
Регистрация: May 2012
Сообщений: 131
|
Перечитал трижды. А что сделать-то хотите?
И да, приложите fla-шку, чтобы понимать как вы всё устроили в редакторе. |
|
|||||
Регистрация: Mar 2013
Сообщений: 290
|
Всем спасибо, все оказалось очень просто, да так, что мне даже стыдно признаться в этом.
Если интересно, то могу рассказать, конешно. Frost47rus, пока показывать что-то нет особого смысла. Вобщем, это некий простейший аналог ТВ-пульта, который переключая каналы, меняет отображаемый мувиклип. Кстати, если где-то кому-то встречались исходники реализация такого рода, было бы интересно заценить. |
Часовой пояс GMT +4, время: 11:05. |
|
« Предыдущая тема | Следующая тема » |
Теги |
вложенность , вложенный клип , доступ |
|
|