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

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

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

Регистрация: Aug 2001
Адрес: Россия, С.-Петербург
Сообщений: 10
По умолчанию Помогите разобраться с подтормаживанием ролика

Ролик представляет из себя ротацию надписей, которые вылетают из центра ролика в случайных направлениях и на случайное расстояние, потом гаснут. Проблема в том, что ролик какое-то время работает гладко, потом замирает (останавливается движение всех надписей), потом все продолжается штатно. Из-за этих задержек все выглядит неаккуратненько. Особенно проявляется в FireFox с десятым плеером от Адобе.

Реализовал я все это на Movieclip tweening prototypes 1.2.0, ссылка на исходник: http://laco.wz.cz/tween

Код скрипта, который обеспечивает ротацию:

Код AS1/AS2:
#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);
Предварительно (эту часть кода я опускаю за очевидностью) создаются пустые мувиклипы и к ним аттачатся надписи из библиотеки - в итоге получается заданное количество мувиков _root["label0"],_root["label1"],_root["label2"]... которые по очереди запускаются из центра ролика. Параметры, которые требуются - запуск новой надписи каждые 150 миллисекунд, время жизни одной надписи - 2 сек (т.е., всего одновременно двигаются примерно 15 надписей).

Это, собственно, уже третий вариант. Во втором варианте я не задавал мувики заранее, в создавал непосредственно внутри функции showOneLabel (передавал туда дополнительно id прототипа, который надо аттачить). Тоже подтормаживало.

В первом варианте использовал класс Tween, идущий в поставке, но там нет возможности изменять два параметра сразу, поэтому взял этот класс. Впрочем, Tween тоже подтормаживал.

Нужен совет, как заставить все это двигаться гладко.


Последний раз редактировалось МихаилК; 18.05.2009 в 23:33.
Создать новую тему   Часовой пояс GMT +4, время: 06:37.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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