![]() |
|
||||||||||
|
|
|
|||||
|
Модрон-ветеринар
|
Всегда пользуюсь setInterval, в силу того, что:
# разные составляющие анимации могут воспроизводиться с разной скоростью # независимость от FPS в проекте и продолжительности анимации Не понимаю, для чего вообще нужен onEnterFrame: пусть номинально, но он все-таки жестко диктует поведением анимированной с его помощью деталью ролика.. |
|
|||||
|
Регистрация: Jan 2006
Адрес: Novosibirsk
Сообщений: 353
|
setInterval больше для анимации, а onEnterFrame для кодинга.
|
|
|||||
|
Регистрация: Nov 2007
Сообщений: 1,724
|
onEnterFrame можно легко первратить в setInterval(); и производительность будет куда лучше
|
|
|||||
|
Модрон-ветеринар
|
|
|
|||||
|
Регистрация: Nov 2007
Сообщений: 1,724
|
это
var shet:Number = 0; var fps:Number = 12; //переменная fps равна fps ролика function privet():Void { if (shet == fps) { trace("Привет!"); shet = 0; } else { shet++ } } onEnterFrame = privet; |
|
|||||
|
Модрон-ветеринар
|
Можно. Вопрос - зачем такие сложности?
Против: 1. Усложнение организации процессов с разными скоростями. Вот, например, у меня почти во всех проектах есть функция, которая делает плавное появление/убираение объектов на сцене. Делает это она с помощью изменения альфы и при этом используется setInterval. Ей я в качестве одного аргумента передается величина интервала. Это гибко - одни объекты появляются с одной скоростью, другие - с другой, и т.д. Зависист только от времени, которое я передаю как аргумент. А с использованием onEnterFrame придется в эту ф-ю вводить еще и дополнительные телодвижения для коррекции, так как без этого привязка будет строго к частоте кадров, и сделать быстрее-медленнее я не смогу. setInterval - пусть с оговорками - но мы можем явно задать частоту выполнения каких-либо действий, onEnterFrame - никак. 2. Необходимость в привязке к мувику или _root. Потенциальный лишний мусор на сцене. Для onEnterFrame нужен мувик-привязка (this.onEnterFrame = ..., mc1.onEnterFrame), для интервала- не нужен. Если у вас проектик небольшой - пофигу, если нет, и используются несколько периодических действий? Придется навешивать несколько onEnterFrame на разные объекты, включая this. А если это нежелательно? Или если уже все объекты заняты - придется создавать мусорные. Для достаточно сложных проектов - опять-таки - всегда нужно помнить, куда что привязано и следить, чтобы мувик с нужной функцией всегда был на сцене. 3. Остановка процесса. То же самое - с остановкой процесса. Для интервала - достаточто clearInterval. Для onEnterFrame - нужно сделать delete mc.onEnterFrame, то есть для безусловной остановки нужно удалять ссылку на описанную функцию с мувика. Можно сделать проверку выполнения условий внутри onEnterFrame, скажете вы, но вопрос - зачем таие сложности - непрерывные дополнительные вычисления? Есть еще аргументы против onEnterFrame. А что вы можете сказать "за"? Добавлено через 10 минут 4. Негибкость с параметрами. В интервальную функцию я могу легко передать параметр: ID = setInterval (doItEasy, 10, 'Привет!'); function doItEasy(mess:String) { trace(mess); } Последний раз редактировалось mooncar; 12.09.2009 в 11:46. |
|
|||||
|
Регистрация: Nov 2007
Сообщений: 1,724
|
ммм.... ну убедили...
но когда важна скорость, то лучше onEnterFrame использовать |
|
|||||
|
Модрон-ветеринар
|
Можно понудничать?
Контрольный выстрел:А что значит - если нужна скорость? И какие тут достоинства у onEnterFrame? Мне правда интересно. Просто "для скорости" в интервальной функции я могу задать промежутки выполнения каких-то действий меньше частоты отрисовки кадров (хотя на флешкин таймер все ругаются, я еще правда не сталкивался), а в onEnterFrame как это сделать? Последний раз редактировалось mooncar; 12.09.2009 в 12:38. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Зачем?
|
|
|||||
|
Регистрация: Nov 2007
Сообщений: 1,724
|
Цитата:
Цитата:
использовал setInterval - через некоторое время начинало тормозить заюзал onEnterFrame - все прекрасно стало работать Последний раз редактировалось Zik.; 12.09.2009 в 13:12. |
![]() |
![]() |
Часовой пояс GMT +4, время: 18:14. |
|
|
« Предыдущая тема | Следующая тема » |
|
|