|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Aug 2001
Адрес: Россия, С.-Петербург
Сообщений: 10
|
Помогите разобраться с подтормаживанием ролика
Ролик представляет из себя ротацию надписей, которые вылетают из центра ролика в случайных направлениях и на случайное расстояние, потом гаснут. Проблема в том, что ролик какое-то время работает гладко, потом замирает (останавливается движение всех надписей), потом все продолжается штатно. Из-за этих задержек все выглядит неаккуратненько. Особенно проявляется в FireFox с десятым плеером от Адобе.
Реализовал я все это на Movieclip tweening prototypes 1.2.0, ссылка на исходник: http://laco.wz.cz/tween Код скрипта, который обеспечивает ротацию: #include "lmc_tween_as1.as" // Показ одной надписи в движении function showOneLabel(labelName,positionEndX,positionEndY) { // Ставим надпись на начальную позицию _root[labelName]._x = positionStartX; _root[labelName]._y = positionStartY; //перемещаем и проявляем, дойдя до половины, гасим с задержкой в четверть интервала (функция hideLabel) _root[labelName].slideTo(positionEndX, positionEndY, movingInterval, "linear"); _root[labelName].alphaTo(100, movingInterval*0.5, "linear", 0, hideLabel); function hideLabel() { _root[labelName].alphaTo(00, movingInterval*0.25, "linear", movingInterval*0.25); } } // Запуск показа оцередной надписи function startLabelMoving() { //Вычисляем новую позицию надписи var positionEndX = baseX+random(movinX); var positionEndY = baseY+random(movinY); //Запускаем надпись labelName = "label"+iLevel; showOneLabel(labelName,positionEndX,positionEndY); //Вычисляем номер следующей надписи iLevel++; if (iLevel>countLables) iLevel=0; } var interv=setInterval(startLabelMoving,rotationInterval); Это, собственно, уже третий вариант. Во втором варианте я не задавал мувики заранее, в создавал непосредственно внутри функции showOneLabel (передавал туда дополнительно id прототипа, который надо аттачить). Тоже подтормаживало. В первом варианте использовал класс Tween, идущий в поставке, но там нет возможности изменять два параметра сразу, поэтому взял этот класс. Впрочем, Tween тоже подтормаживал. Нужен совет, как заставить все это двигаться гладко. Последний раз редактировалось МихаилК; 18.05.2009 в 23:33. |
|
|||||
Регистрация: Apr 2009
Сообщений: 74
|
Может iLevel постоянно растет и не обнуляется?
|
|
|||||
МихаилК, а что значит - аттачатся надписи из библиотеки?... они в каком виде там лежат?... у меня была подобная проблема с размножение мувиков - я в мувике в последнем кадре прописала - this.removeMovieClip(); может эта информация вам чем-то поможет
|
|
|||||
Регистрация: Aug 2001
Адрес: Россия, С.-Петербург
Сообщений: 10
|
аттачатся - в том смысле, что в начале (до запуска ротации) отрабатывает такой код:
//загрузка изображений надписей в количестве countLables (прототипы загружаются по кругу) for (var i=0;i<countLables;i++) { var labelName = "label"+i; _root.createEmptyMovieClip(labelName, i); _root[labelName]._alpha = 0; var labelNamePrototip = "label"+iPrototip; iPrototip++; if (iPrototip>maxPrototip) iPrototip=0; _root[labelName].attachMovie(labelNamePrototip, labelName, labelLevel); } Каждый прототип в библиотеке - это шрифтовая надпись, переведенная в кривые (ctrl-D дважды) и сконвертированная в символ. |
|
|||||
МихаилК если у вас прототипы это мувики - сделайте как я сказала и проблем не будет... просто когда все это богатство грузится setInterval мозги у компьютера реально ломаются...
|
|
|||||
Регистрация: Aug 2001
Адрес: Россия, С.-Петербург
Сообщений: 10
|
Они грузятся до ротации и по сетИнтервалу они просто гоняются плюс манипуляции с альфой.
У меня есть подозрение, что дело действительно в сетИнтервале. Может поставить 24 кадра в секунду и в каждый четвертый кадр запихать вызов функции, которая запускает очередной мувик? |
|
|||||
... а почему все-таки не добавить в последний кадр каждого мувика this.removeMovieClip()?... если вам думается что это не корректно - зря! это хороший метод... а про 24 кадра в секунду... ну там-же и не в секунду вовсе... там какая-то мутная история - я к тому, что к ним лучше не сильно привязываться
|
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Функция в функции? Вообще не в курсе тонкостей работы, но здравый смысл подсказывает, что hideLabel() - локальная функция, короче она умрет после конца родительской функции.
iLevel - не определенно. slideTo, alphaTo - реализации не видно. UPD: проглядел ссылку)
__________________
Тут мужик танцует и поёт про флэш Последний раз редактировалось Psycho Tiger; 19.05.2009 в 16:55. |
|
|||||
Регистрация: Aug 2001
Адрес: Россия, С.-Петербург
Сообщений: 10
|
hideLabel - callback-функция, iLevel - ставится нулем в начале, потом растет
> а почему все-таки не добавить в последний кадр каждого мувика this.removeMovieClip()?. У меня так было сделано в самом первом варианте. Каждый раз при вызове showOneLabel() создавался пустой клип, куда аттачился клип из библиотеки, в конце по событию окончания движения отрабатывался removeMovieClip (только не изнутри, а снаружи). Эффект с задержкой был тот же самый, почему я и решил в итоге загрузить лэйблы предварительно, а не грузить их во время выполнения. На самом деле, глюк с замиранием воспроизведения наблюдается только в ФФоксе (в частности, с десятым плеером от адобе). В ИЕ задержек нет. |
Часовой пояс GMT +4, время: 23:34. |
|
« Предыдущая тема | Следующая тема » |
|
|