Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Общие вопросы о Flash (не затрагивающие ActionScript)

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 13.07.2007, 13:27
Seyonn вне форума Посмотреть профиль Отправить личное сообщение для Seyonn Найти все сообщения от Seyonn
  № 1  
Ответить с цитированием
Seyonn

Регистрация: Jul 2007
Сообщений: 5
По умолчанию Видимые/невидимые объекты

Возможно мне надо удалить мозг, но в FAQ не нашел.

1. Первый вопрос.

Есть объект. Объект исчезает из видимости. Например, клип переходит во фрейм, где этот объект отсутствует.

Проблема: после этого он перестает быть доступен для Action Script.
А мне нужно изменить его свойства в ДРУГИХ фреймах. НЕ текущих.

Что делать?

(сейчас использую костыль - объект не удаляю, а просто увожу его далеко-далеко за границы сцены, и делаю невидимым. Адски неудобно! Потому что клип постоянно изменяется.)

2. Второй вопрос.

Мне нужно выполнить действие ПОСЛЕ того как фрейм полностью отрендерился. Ну, или как вариант - после того как они уже стали доступны Action Script'у. События OnRender и OnEnterFrame работают именно при входе во фрейм. Когда еще ничего нету. Есть какое-нибудь событие, которое работает "на завершении" фрейма?

(таким образом, кажется, работает код, вписанный в сам фрейм. Но этого делать нельзя в силу идеалогии третьей версии языка. Сейчас я все действия выполняю с помощью приаттаченного к клипу файла с исходником всех действий. Все события обрабатываю именно как события. Поэтому вариант "пиши код в кадрах" большая просьба не предлагать. Мне интересно как можно именно перехватить момент, когда фрейм уже отрисован)

Старый 13.07.2007, 13:33
chingachgoog вне форума Посмотреть профиль Найти все сообщения от chingachgoog
  № 2  
Ответить с цитированием
chingachgoog
Banned
[+4 01.02.09]
[+1 01.02.09]
 
Аватар для chingachgoog

блогер
Регистрация: Nov 2006
Адрес: Moscow
Сообщений: 2,145
Записей в блоге: 7
Цитата:
Сообщение от Seyonn
1. Первый вопрос.

Есть объект. Объект исчезает из видимости. Например, клип переходит во фрейм, где этот объект отсутствует.

Проблема: после этого он перестает быть доступен для Action Script.
А мне нужно изменить его свойства в ДРУГИХ фреймах. НЕ текущих.

Что делать?
Объект по-любому должен быть на фреймах.
Далее есть два варианта:
1) _visible=false
2) Делать в объекте пустой кадр и переводить на этот кадр при необходимости.

Цитата:
Сообщение от Seyonn
2. Второй вопрос.

Мне нужно выполнить действие ПОСЛЕ того как фрейм полностью отрендерился.
А не будет ли это моментом перехода на следующий фрейм?

Старый 13.07.2007, 13:41
Seyonn вне форума Посмотреть профиль Отправить личное сообщение для Seyonn Найти все сообщения от Seyonn
  № 3  
Ответить с цитированием
Seyonn

Регистрация: Jul 2007
Сообщений: 5
Цитата:
Сообщение от chingachgoog
Объект по-любому должен быть на фреймах.
Да? Печально. Значит, всё что имеет состояния придется кодить вручную, без редактора
Убиться, хоть свой редактор пиши.

Цитата:
Сообщение от chingachgoog
А не будет ли это моментом перехода на следующий фрейм?
Нет, не будет.
Там такое дело - один кадр - одно состояние грубо-говоря-меню... Каждый следующий кадр в общем-то ничем кроме идеи с предыдущим не связан. Поэтому вся навигация производится с помощью gotoAndStop, а значит на следующие кадры он не переходит.

Конечно, можно будет сделать "дырчатый" мувик. Типа, каждый кадр дублируется два раза. Ссылка ссылается на первый кадр, делает goToAndStop на второй кадр, а уже на enterFrame ко второму кадру приписывать собственно действие. Но это неправильный стиль программирования, просто ужасный.

Блин, ну должно, должно быть такое событие! В WinAPI например оно есть )

Старый 13.07.2007, 13:46
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Это ошибка в организации, раз такие сложности возникают.

Старый 13.07.2007, 13:50
chingachgoog вне форума Посмотреть профиль Найти все сообщения от chingachgoog
  № 5  
Ответить с цитированием
chingachgoog
Banned
[+4 01.02.09]
[+1 01.02.09]
 
Аватар для chingachgoog

блогер
Регистрация: Nov 2006
Адрес: Moscow
Сообщений: 2,145
Записей в блоге: 7
Может оно все гораздо проще, но можно сделать так:
создать самым верхним слоем мувик - т.к. его код будет выполняться самым последним в фрейме, то следовательно, как только код начнет выполняться - значит все до этого уже отрисовано-выполнено.

Старый 13.07.2007, 13:53
Seyonn вне форума Посмотреть профиль Отправить личное сообщение для Seyonn Найти все сообщения от Seyonn
  № 6  
Ответить с цитированием
Seyonn

Регистрация: Jul 2007
Сообщений: 5
Цитата:
Сообщение от __etc
Это ошибка в организации, раз такие сложности возникают.
Это бесспорно ошибка в организации.
И в моей, и во флеше.

Я размышлял так: клип по сути есть отличный автомат, с конечным числом состояний. Которые, главное, удобно просматривать, всего лишь выбирая мышкой нужный кадр.

То есть если есть клип, то им можно выразить любой объект, имеющий состояния.

Дальше - организация как у любого графического интерфейса.
Один кадр клипа - один кусок интерфейса.
Каждый элемент интерфейса, в т.ч. не только кнопки, но и движущиеся элементы, анимации и прочее - постоянно кидают события, в зависимости от того, что произошло.

К мувику приложен файл на AS3. В файле прописано соответствие ловящихся событий и функций, которые выполняет клип.

По-моему логично.

Но нерабоче

Где-то я читал о DisplayLists... Может быть, как-нибудь вручную можно внести объект в DisplayList?

Цитата:
Сообщение от chingachgoog
Может оно все гораздо проще, но можно сделать так:
создать самым верхним слоем мувик - т.к. его код будет выполняться самым последним в фрейме, то следовательно, как только код начнет выполняться - значит все до этого уже отрисовано-выполнено.
Я сделал так.

Состояния рисую все так же в одном клипе, но по типу одно состояние - один слой. Удобно для редактирования. В то время, как редактирую какое-либо состояние, просто ручками на таймлайне делаю невидимыми все остальные ненужные слои.

Все подконтрольные объекты имеют свои instance-имена.

Дальше делаю массивы с этими объектами, в которые группирую по смыслу. По сути, один слой - один массив.

Массивы регистрируются при старте мувика в приаттаченном скрипте.

Далее есть функции DisplayWindow и HideWindow которые присваивают visible=false нужному массиву.

Таким образом, все еще можно рисовать ручками

Но всё равно обидно. Ищется событие onFrameValidated


Последний раз редактировалось etc; 13.07.2007 в 14:02.
Старый 13.07.2007, 14:05
chingachgoog вне форума Посмотреть профиль Найти все сообщения от chingachgoog
  № 7  
Ответить с цитированием
chingachgoog
Banned
[+4 01.02.09]
[+1 01.02.09]
 
Аватар для chingachgoog

блогер
Регистрация: Nov 2006
Адрес: Moscow
Сообщений: 2,145
Записей в блоге: 7
Много вещей сделано именно таким образом.
Что мешает сделать в клипе еще один слой - самый верхний, с пустым мувиком, который будет при инициализации отдавать команду (флаг)?

Старый 13.07.2007, 14:05
Seyonn вне форума Посмотреть профиль Отправить личное сообщение для Seyonn Найти все сообщения от Seyonn
  № 8  
Ответить с цитированием
Seyonn

Регистрация: Jul 2007
Сообщений: 5
Цитата:
Сообщение от chingachgoog
Много вещей сделано именно таким образом.
Что мешает сделать в клипе еще один слой - самый верхний, с пустым мувиком, который будет при инициализации отдавать команду (флаг)?
Идеалогия. Нельзя писать код в кадрах клипов

Старый 13.07.2007, 14:18
chingachgoog вне форума Посмотреть профиль Найти все сообщения от chingachgoog
  № 9  
Ответить с цитированием
chingachgoog
Banned
[+4 01.02.09]
[+1 01.02.09]
 
Аватар для chingachgoog

блогер
Регистрация: Nov 2006
Адрес: Moscow
Сообщений: 2,145
Записей в блоге: 7
А зачем обязательно писать в клипе? Назначьте извне

Старый 13.07.2007, 14:21
Seyonn вне форума Посмотреть профиль Отправить личное сообщение для Seyonn Найти все сообщения от Seyonn
  № 10  
Ответить с цитированием
Seyonn

Регистрация: Jul 2007
Сообщений: 5
Цитата:
Сообщение от chingachgoog
А зачем обязательно писать в клипе? Назначьте извне
Да, это идея. Спасибо
Адский хак.

Создать новую тему Ответ Часовой пояс GMT +4, время: 09:02.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 09:02.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.