![]() |
Доступ к экземплярам составного экземпляра
Всем привет.
В библиотеке есть составной мувиклип Clipdriver, который состоит из: - рамки Frame - области проигрывания мувиклипа Container, - контейнера кнопок Buttonholder, - кнопок управления: Button1, Button2, размещенных в этом Buttonholder'е. Есть также три мувиклипа, которые должны проигрываться этим Clipdriver'ом. Все вышеперечисленные объекты пролинкованы галочкой к одноименным классам. Однако, каждый класс присутствует в виде .as файла, поэтому они не dynamic. Опираясь на Третью Заповедь Wolsh'a, согласно которой, детям нельзя дергать родителей, я решил избежать употребления слушателей в кнопках Button1, Button2 (например, посредством хитрого обращения вверх типа this.parent.parent или там this.root, и т.п.) и решить эту проблему иначе. Заморочка1: Я не знаю как толком "иначе". Поэтому решил сделать вот как: создать внутри класса Clipdriver универсальный слушатель, который работает так: Код AS3:
То есть, когда мы создаем его посредством кода, тут всё легко. Но вот когда он формируется сам, потому что является частью более сложного экземпляра, то возникает непонимание. Нет, я конешно могу его узнать посредством trace, там будет что-то типа instance6, но это на уровне самого класса Container. А как его передать вверх? Ведь это ересь и анафема. Сначала я подумал, что можно провернуть вот такой финт: в классе Container ввести строку: Код AS3:
Цитата:
(Вот щас подумал, может быть тут как-то статические свойства/методы использовать). И наконец, третья идея: попробовать отловить событие ДОБАВЛЕНИЯ ЭКЗЕМПЛЯРА В ЭКЗЕМПЛЯР, и уже из него выцепить нужные имена. Однако, я не знаю есть ли вообще такое? Генерирует ли оператор: Код AS3:
Но тут опять проблема в том, что экземпляр Clipdriver является собранным в библиотеке, и даже если такие события происходят, то неявно. Короче, что-то я запутался в этом разнообразии, прошу подсказок в любых направлениях. А то начинаешь невольно приходить к выводам, что вот такие многовложенные формации нужно делать исключительно кодом. То есть вбивая координаты каждого объекта по отношению к другому, юзать каскады addChild'ов и т.п. А это более муторно. Всё-таки собрать в редакторе нужный объект посредством визуальных инструментов как-то проще и приятнее. |
Clipdriver.getChildAt() или Clipdriver.getChildByName() - так можно к детям обратится.
А про события внутри элемента из адобафлеш.. Если бы меня препёрло когда нибудь, что то в нём нарисовать, то слушателей я бы там не делал. Мне кажется, лучше при помощи тех же методов, что я написал выше, присвоить ссылки переменным в классе и уже в самом классе и слушателей создавать. |
Перечитал трижды. А что сделать-то хотите?
И да, приложите fla-шку, чтобы понимать как вы всё устроили в редакторе. |
Всем спасибо, все оказалось очень просто, да так, что мне даже стыдно признаться в этом.
Если интересно, то могу рассказать, конешно. Frost47rus, пока показывать что-то нет особого смысла. Вобщем, это некий простейший аналог ТВ-пульта, который переключая каналы, меняет отображаемый мувиклип. Кстати, если где-то кому-то встречались исходники реализация такого рода, было бы интересно заценить. |
| Часовой пояс GMT +4, время: 12:13. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.