![]() |
Инициализация компонента на таймлайн
Есть мувклип с несколькими ключевыми кадрами.Этот мувклип связан с классом.В первом кадре клипа стоит stop().Во втором лежит стандартный компонент.Его надо проинициализировать,повесить обработчики.После появления клипа на сцене и переходу к кадру с клипом.Обработчики компонента не работают.Если этот компонент положить в первый кадр - все нормально.Т.е. проблема в том что компонент нельзя проинициализировать если он лежит не в первом кадре.Как обойти проблему?
|
Может положить компонент на первый кадр, но например под маску или за пределы отображаемой области и проинициализировать как надо, а на втором кадре убрать маску или выставить правильные координаты? :)
|
Это выход,но не удобно при дизайне.Компонент перекрывает остальные элементы из 1-го кадра.Должен быть какой то програмный способ .Я забыл как это делается.Давно флеш брал в руки
|
можно использовать событие
Код AS3:
еще вариант, делать во втором кадре dispatchEvent своего события, например COMPONENT_ADDED, в классе подписаться на это событие и определить функцию, которая будет инициализировать компонент |
Интересно получается Если в класс отвечающий за мувклип добавить обработку Event.ADDED то события компонента из 2-го кадра отрабатываются но при этом возникает ошибка:TypeError: Error #1009: Cannot access a property or method of a null object reference. !!!
Добавлено через 3 минуты Вообще это как то не "по людски".Если компонент находится в мувклипе то почему его нельзя проинициализировать если он не в первом кадре?Ведь когда мы кладем его из библиотеки на сцену то этим мы говорим системе(флешу) о присутствие экземпляра.Почему тогда его нельзя инициализировать? |
считайте, что компонент во втором кадре - как локальная переменная в функции - пока вы не вызовете функцию - этой переменной не существует, и после того, как функция выполнится - локальная переменная перестанет существовать, так и с таймлайном.
Ошибка возникает в следствии того, что во втором кадре у вас кроме компонента есть еще какие-то элементы - обработчик срабатывает для них всех, вам нужно через e.target определить, что добавляемый элемент - именно ваш компонент |
Выходит что добраться до компонента из 2-го кадра при текущем первой никак нельзя пока этот компонент не отобразиться на сцене,так?Может есть какой то способ получения ссылки на него не отображая 2-й кадр?
|
Цитата:
На самом деле компонент появляется в мувиклипе в тот момент, когда мувиклип переходит на кадр с этим компонентом - без этого вы до него никак не достучитесь. |
Цитата:
Добавлено через 33 минуты Вот код на скорую руку: 1-й кадр две кнопки (b_1,b2)+stop() на кадре 2-й кадр два компонента(comp,res) Код AS3:
|
Цитата:
|
В принципе это выход,но должно быть какое то программное "красивое" решение по доступу к компонентам не в 1-м кадре!!!
|
все так думают, когда сталкиваются с этой проблемой :)
красивое решение - юзать только первый кадр ))) |
красивое решение вообще не юзать кадры
|
когда работаешь с дизайнерами, это не всегда удается. Лучше сделать в нескольких кадрах, чем сидеть и перекидывать весь дизайн из кадров в один кадр в разные слои и делать им программно visible = true / false; А потом, когда дизайн меняется, делать тоже самое снова
|
litebox, зх блин вот мне сейчас на работе в наследство достался набор психологических тестов. Каждый тест - отдельный модуль, всего 15 штук. В каждом тесте - до 30 кадров, каждый кадр со своим интерфейсом и логикой. И тот мудак, который это делал, свалил всю графику в первый кадр. И туда же написал весь код по принципу
Код AS1/AS2:
|
| Часовой пояс GMT +4, время: 03:01. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.