PDA

Просмотр полной версии : Как грамотно уйти от "программирования в кадрах"?


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

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

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

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

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

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

etc
17.02.2008, 16:13
http://gorbatov.blogspot.com/2007/09/addframescript.html

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

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

†‡Paladin‡†
18.02.2008, 12:50
Есть главный класс документа и кадр с меткой "start". Класс должен реагировать на проигрывание кадра с этой меткой.
Класс должен реагировать на событие 'start', посылаемое управляющим классом. А управляющий содержит логику и посылает событие тем, кому это надо (точнее подписывает нужные классы на событие). Собственно все. А в мувиклипах только анимация.

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

etc
18.02.2008, 15:10
addFrameScript принимает аргументом номер кадра, а не метку, __etc.
Вы не можете получить номер кадра по метке?

akerka
19.02.2008, 13:16
секунду, а что вы имеете в виду? Сейчас посмотрю документацию и узнаю могу я это или нет...

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

etc
19.02.2008, 13:25
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']);