Показать сообщение отдельно
Старый 14.08.2013, 05:50
Котейка вне форума Посмотреть профиль Отправить личное сообщение для Котейка Найти все сообщения от Котейка
  № 4  
Ответить с цитированием
Котейка
 
Аватар для Котейка

Регистрация: Aug 2013
Сообщений: 56
UserSuperPupsik, ну так я же думал, что вам именно такое поведение и нужно, чтобы разные объекты не зависели друг от друга. Кто ж мог подумать, что вам нужен один стек анимации на всех. Ну вот как-то так будет:
Код AS3:
var aniParameters:Array = new Array();
function ani(object:DisplayObject, parameters:Array, time:Number = 1):void
{
	if(object && parameters){
		for each(var item:Object in parameters) {
			item.object = object;
			if(!item.t) item.t = time;
		}
		if(!aniParameters.length) aniParameters = parameters;
		else {
			aniParameters = aniParameters.concat(parameters);
			return;
		}
	}
	if(aniParameters.length){
		var nextParameters:Object = aniParameters.shift();
		var nextObject:DisplayObject = nextParameters.object;
		var nextTime:Number = nextParameters.t;
		delete nextParameters.object;
		delete nextParameters.t;
		if(aniParameters.length) {
			nextParameters.onComplete = arguments.callee;
			nextParameters.onCompleteParams = [null, null];
		}
		TweenLite.to(nextObject, nextTime, nextParameters);
	}
}
 
/**
 * Ну и соббсна пример
 * Обратите внимание, что к прочим параметрам анимации (x,y,ease и т.д.) я добавил еще один необязательный - t
 * Это время анимации в секундах, как и последняя переменная, принимаемая функцией.
 * То есть те шаги, у которых t не указан как и раньше будут брать время общее для всех шагов,
 * а у которых указан будет свое индивидуальное)
 */
ani(simbol1, [{x:500, y:10, t:2},{x:500, y:350},{x:30,y:350, ease:Elastic.easeIn}], 3);
 
ani(simbol2, [{x:400,y:400, t:2},{x:20, y:17}]);
ani(simbol2, [{x:400,y:17, t:2},{x:14,y:300, t:3}]);


Последний раз редактировалось Котейка; 14.08.2013 в 07:11.