![]() |
|
||||||||||
|
|||||
|
Регистрация: Jul 2007
Сообщений: 5
|
Возможно мне надо удалить мозг, но в FAQ не нашел.
1. Первый вопрос. Есть объект. Объект исчезает из видимости. Например, клип переходит во фрейм, где этот объект отсутствует. Проблема: после этого он перестает быть доступен для Action Script. А мне нужно изменить его свойства в ДРУГИХ фреймах. НЕ текущих. Что делать? (сейчас использую костыль - объект не удаляю, а просто увожу его далеко-далеко за границы сцены, и делаю невидимым. Адски неудобно! Потому что клип постоянно изменяется.) 2. Второй вопрос. Мне нужно выполнить действие ПОСЛЕ того как фрейм полностью отрендерился. Ну, или как вариант - после того как они уже стали доступны Action Script'у. События OnRender и OnEnterFrame работают именно при входе во фрейм. Когда еще ничего нету. Есть какое-нибудь событие, которое работает "на завершении" фрейма? (таким образом, кажется, работает код, вписанный в сам фрейм. Но этого делать нельзя в силу идеалогии третьей версии языка. Сейчас я все действия выполняю с помощью приаттаченного к клипу файла с исходником всех действий. Все события обрабатываю именно как события. Поэтому вариант "пиши код в кадрах" большая просьба не предлагать. Мне интересно как можно именно перехватить момент, когда фрейм уже отрисован) |
|
|||||
|
Banned
[+4 01.02.09]
[+1 01.02.09] |
Цитата:
Далее есть два варианта: 1) _visible=false 2) Делать в объекте пустой кадр и переводить на этот кадр при необходимости. Цитата:
|
|
|||||
|
Регистрация: Jul 2007
Сообщений: 5
|
Цитата:
![]() Убиться, хоть свой редактор пиши. Цитата:
Там такое дело - один кадр - одно состояние грубо-говоря-меню... Каждый следующий кадр в общем-то ничем кроме идеи с предыдущим не связан. Поэтому вся навигация производится с помощью gotoAndStop, а значит на следующие кадры он не переходит. Конечно, можно будет сделать "дырчатый" мувик. Типа, каждый кадр дублируется два раза. Ссылка ссылается на первый кадр, делает goToAndStop на второй кадр, а уже на enterFrame ко второму кадру приписывать собственно действие. Но это неправильный стиль программирования, просто ужасный. Блин, ну должно, должно быть такое событие! В WinAPI например оно есть ) |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Это ошибка в организации, раз такие сложности возникают.
|
|
|||||
|
Banned
[+4 01.02.09]
[+1 01.02.09] |
Может оно все гораздо проще, но можно сделать так:
создать самым верхним слоем мувик - т.к. его код будет выполняться самым последним в фрейме, то следовательно, как только код начнет выполняться - значит все до этого уже отрисовано-выполнено. |
|
|||||
|
Регистрация: Jul 2007
Сообщений: 5
|
Цитата:
И в моей, и во флеше. Я размышлял так: клип по сути есть отличный автомат, с конечным числом состояний. Которые, главное, удобно просматривать, всего лишь выбирая мышкой нужный кадр. То есть если есть клип, то им можно выразить любой объект, имеющий состояния. Дальше - организация как у любого графического интерфейса. Один кадр клипа - один кусок интерфейса. Каждый элемент интерфейса, в т.ч. не только кнопки, но и движущиеся элементы, анимации и прочее - постоянно кидают события, в зависимости от того, что произошло. К мувику приложен файл на AS3. В файле прописано соответствие ловящихся событий и функций, которые выполняет клип. По-моему логично. Но нерабоче ![]() Где-то я читал о DisplayLists... Может быть, как-нибудь вручную можно внести объект в DisplayList? Цитата:
Состояния рисую все так же в одном клипе, но по типу одно состояние - один слой. Удобно для редактирования. В то время, как редактирую какое-либо состояние, просто ручками на таймлайне делаю невидимыми все остальные ненужные слои. Все подконтрольные объекты имеют свои instance-имена. Дальше делаю массивы с этими объектами, в которые группирую по смыслу. По сути, один слой - один массив. Массивы регистрируются при старте мувика в приаттаченном скрипте. Далее есть функции DisplayWindow и HideWindow которые присваивают visible=false нужному массиву. Таким образом, все еще можно рисовать ручками ![]() Но всё равно обидно. Ищется событие onFrameValidated ![]() Последний раз редактировалось etc; 13.07.2007 в 14:02. |
|
|||||
|
Banned
[+4 01.02.09]
[+1 01.02.09] |
Много вещей сделано именно таким образом.
Что мешает сделать в клипе еще один слой - самый верхний, с пустым мувиком, который будет при инициализации отдавать команду (флаг)? |
|
|||||
|
Регистрация: Jul 2007
Сообщений: 5
|
Цитата:
![]() |
|
|||||
|
Регистрация: Jul 2007
Сообщений: 5
|
Цитата:
![]() Адский хак. |
![]() |
![]() |
Часовой пояс GMT +4, время: 14:44. |
|
|
« Предыдущая тема | Следующая тема » |
|
|