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

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

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

Регистрация: Apr 2006
Сообщений: 36
По умолчанию Как грамотно уйти от "программирования в кадрах"?

Как правильно обрабатывать кадры с метками не используя программирования в кадрах?

Делается ли это вообще? Большинство прочитанных пособий клеймят программирование в кадрах как архаизм. Попробовал обойтись без него, но результат похож на "баян".

Есть главный класс документа и кадр с меткой "start". Класс должен реагировать на проигрывание кадра с этой меткой.

В класс документа добавляю обработчик enterFrame.
В нем проверяю, соответствует ли название текущей метки названию, которое надо обработать. Если да, то выполняю действия для кадра с этим названием.
А если таких меток немало? Получается что в КАЖДЫЙ enterFrame (30 в секунду) происходит сравнение текущей метки со всеми которые может понадобиться обработать. Я сомневаюсь что такое громоздилово эффективно.

Иначе создаю в кадре кастомное событие и отлавливаю его в классе документа, но это ведь снова программирование в кадрах.

Есть ли более правильные решения? Существуй вариант "подписаться на событие кадр_start'" которое рассылает сам плеер, я был бы рад. Иначе выходит, что программирование в кадрах все еще актуально


Последний раз редактировалось akerka; 17.02.2008 в 15:26.
Старый 17.02.2008, 16:13
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
http://gorbatov.blogspot.com/2007/09...amescript.html

Старый 18.02.2008, 12:36
akerka вне форума Посмотреть профиль Отправить личное сообщение для akerka Найти все сообщения от akerka
  № 3  
Ответить с цитированием
akerka
 
Аватар для akerka

Регистрация: Apr 2006
Сообщений: 36
addFrameScript принимает аргументом номер кадра, а не метку, __etc. Если я меняю таймлайн я должен весь код синхронизировать, медитируя над багами.
Нашел описание такой методики : http://labs.bigspaceship.com/blog/?p=43 где в момент создания клипа индексы всех меток сохраняются в объект. Он же занимается подпиской на сообщения и рассылкой их. Все равно баян. Должно же быть встроенное средство обработки меток, иначе зачем они сохранились?

С другой стороны, если есть автоматически рассылаемое событие с названием метки, есть и проблема одинаковых имен... да легче самому слать событие из кадра. Просто жаль будет, если напишу часть кода а потом найду подводный камень у этого решения, и придется переделывать.


Последний раз редактировалось akerka; 18.02.2008 в 12:43.
Старый 18.02.2008, 15:10
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от akerka
addFrameScript принимает аргументом номер кадра, а не метку, __etc.
Вы не можете получить номер кадра по метке?

Старый 18.02.2008, 12:50
†‡Paladin‡† вне форума Посмотреть профиль Отправить личное сообщение для †‡Paladin‡† Найти все сообщения от †‡Paladin‡†
  № 5  
Ответить с цитированием
†‡Paladin‡†

Регистрация: Nov 2005
Сообщений: 1,058
Цитата:
Есть главный класс документа и кадр с меткой "start". Класс должен реагировать на проигрывание кадра с этой меткой.
Класс должен реагировать на событие 'start', посылаемое управляющим классом. А управляющий содержит логику и посылает событие тем, кому это надо (точнее подписывает нужные классы на событие). Собственно все. А в мувиклипах только анимация.

Старый 18.02.2008, 15:01
akerka вне форума Посмотреть профиль Отправить личное сообщение для akerka Найти все сообщения от akerka
  № 6  
Ответить с цитированием
akerka
 
Аватар для akerka

Регистрация: Apr 2006
Сообщений: 36
Зачем создавать еще один класс, перед которым встанут те же проблемы - без создания кода в кадрах реагировать на проигрывание меток?
Я не дотошный. Хотел понять можно ли в новый стандартах добиться прежней функциональности. С минимумом накладных расходов. Не записывая на бумажке какие номера кадров чему соответствуют. И не создавая еще управляющий класс с логикой для управления другим управляющим классом с логикой. Пока что - или делать пользовательскую надстройку к механизму сообщений - клас учета всех меток - а это даже не баян, это филармония. Или плюнуть на стиль и без особенных проблем слать сообщения из кадров.

Старый 19.02.2008, 13:16
akerka вне форума Посмотреть профиль Отправить личное сообщение для akerka Найти все сообщения от akerka
  № 7  
Ответить с цитированием
akerka
 
Аватар для akerka

Регистрация: Apr 2006
Сообщений: 36
секунду, а что вы имеете в виду? Сейчас посмотрю документацию и узнаю могу я это или нет...

да, понял. Спасибо, _etc. В который раз.


Последний раз редактировалось etc; 19.02.2008 в 13:25.
Старый 19.02.2008, 13:25
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 8  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Код:
stop();
var hash:Object = new Object();
this.currentLabels.map(function(o:FrameLabel, index:int, arr:Array):void{hash[o.name]=o.frame;});
trace(hash['label1']);

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

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

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


 


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


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