Просмотр полной версии : Очень медленно на сайте, быстро локально
Follower
03.04.2011, 19:58
Здравствуйте.
Необходимо было сделать плавное движение. Поставил таймер с интервалом в 1, получилось плавно, но медленно. Где-то прочитал, что количество кадров в секунду влияет и на таймеры, то есть если стоит 24 кадра в секунду, то минимальный интервал будет около 40 мс. Вкрутил в свойствах документа до 120, стало летать в самой программе, раза в полтора побыстрее стало, если запустить локально, и точно так же осталось на сайте. Глянул в html'е, создаваемом publish'ем, ничего про framerate там не нашел. Как убыстрить анимацию?
с каким фрейрейтом публикация сегенерена, с тем она и будет всегда.
ФПС - может прыгать, в зависимости от нагрузки процессора графикой.
а таймер он по времени тикает, которое есть объективная реальность и неизменна :)
все прочее - рывки, сглаживание - улучшайте графику. или пример выложите.
Follower
03.04.2011, 20:31
Ну не знаю, не знаю. Точно говорю - у меня фреймрейт документа влияет на скорость объекта, движущегося по таймеру. Я и сам думал, что таймер по времени считает, ан нет. Вы проверьте на простеньком примере.
UPD: Поставил 1 в свойствах документа - ужосужосужос. Рывками и с черепашьей скоростью. Во всей флешке 1 кадр, движение на таймерах, а вот поди ж ты...
да я как бы так слегка не знаю что проверить.
таймер - это таймер. я сейчас кучу примеров хоть простеньких хоть сложных изображу :)
но если он каждые 100 мсек с таймера получает _х+=1, то он имено так у меня и двигается всегда :)
вы свой код лучше покажите, так мы барыжить до морковкиного заговения будем :)
другое дело если у вас на движение где-то onEnterFrame повешен. Так это слегка совсем другое дело.
Follower
03.04.2011, 20:53
var Tim:Timer = new Timer(1,125);
Tim.addEventListener(TimerEvent.TIMER, tick);
Tim.addEventListener(TimerEvent.TIMER_COMPLETE, end);
function tick(e:TimerEvent):void
{
for (i=endN-wNum; i<=endN; i++)
{
imgLoader[cycle][i].x += sh;//again no 'if' :)
}
}
Теоретически должно за 125/1000 секунды пробежать, но нет же.
Может, дело в том, что их 5 одновременно двигается?
UPD: Timer frequency is limited to 60 frames per second, meaning a delay lower than 16.6 milliseconds causes runtime problems. - с сайта adobe. 60 fps - это 2 секунды движения, вместо нужных мне 0.5. Ну ладно же.
Сделал по 3 пикселя зараз, стало терпимо.
updateAfterEvent() попрбуйте после каждого цикла изменения координат.
Может дело в wmode? Попробуйте при публикации в window выставить.
EventDispatcher.addEventListener()
Availability:Flash Player 6 (6.0.79.0).
Edition:Flash MX 2004 and Flash MX Professional 2004.
Хм. Ну.... это нечто оочень старое. Под 6-й плэер. Вполне возможно что оно будет глючить :)
Tim:Timer = new Timer - это из АС3 ?
Я что-то в результате не могу понять, на какаом языке это написано и под какой плэер? :)
Никогда не получалось добиться плавного движения объектов через использование Timer(), setTimeout(), setInterval(). Видимо они изначально не предназначаются для таких вещей (в AS3.0, во всяком случае). Но, частота кадров, действительно, не может влиять на частоту срабатывания таймера, возможно движение, просто, лучше сглаживается из за высокой частоты.
Лучше используйте Tween() (http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/fl/transitions/Tween.html) из пакета fl.transitions., там можно задавать как кадровую длительность выполнения, так и временную (последней, правда, не пользуюсь).
setInterval + updateAfterEvent() либо onEnterFrame при хорошем fps дают нормальную плавность движения.
А tween лучше использовать от Greensock (http://www.greensock.com/), тот же TweenLite (http://www.greensock.com/tweenlite/). Я, например, давно на него перешел от встроенного Tween.
Вот сравнительные тесты (http://www.greensock.com/tweening-speed-test/) разных твинов.
provigator
04.04.2011, 12:37
Очень медленно на сайте, быстро локально
все дело в том что флэш тормозит в браузере в отличии от автономной swf. по моим наблюдениям идеально-максимальный фпс для браузера - 60. 120 иногда поддерживает опера или мозила в зависимости от версии плеера, а в большинстве браузеров скорость замедляется в 2 раза. так что при установке таймера отталкивайтесь от 60фпс. тогда будет одинаково работать и автономно и в любом браузере
Может дело в wmode? Попробуйте при публикации в window выставить.
Автор, прислушайтесь также к этому. Производительноть плеера в режиме wmode выше.
я так скромненько упомяну, что оптимальным считался ФПС в 31.... не помню почему именно 31, там какие-то были рассчеты и выкладки. И так и делаю. И все нормально.
А 60, а уж тем более 120 - это нонсенс. Все OEF будут дико жрать ресурсы на ровном месте.
Надо видеть код и ту графику, которую автор таскает по стэйджу. Однозначно там куча градиентов, прозрачностей, эффектов и т.п. Клипы друг на дружку наехали - и привет. Начинает дергатсья и тормозить.
imgLoader[cycle][i].x += sh;//again no 'if' :)
У меня какое-то смутное подозрение, что у автора дергается прогресс-бар загрузчика???
Если ДА..... то ..... я лучше потом....
Спасибо, mooncar за информацию. Пользуюсь адобовским твином, потому, что до сих пор устраивало. Буду знать на будущее.
Добавлено через 1 минуту
....А 60, а уж тем более 120 - это нонсенс. Все OEF будут дико жрать ресурсы на ровном месте....
Замерял в брузере - больше 60-ти всё равно не даёт, хоть сколько ставь.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.