Показать сообщение отдельно
Старый 29.03.2008, 00:10
TanaTiX вне форума Посмотреть профиль Отправить личное сообщение для TanaTiX Найти все сообщения от TanaTiX
  № 1  
Ответить с цитированием
TanaTiX
 
Аватар для TanaTiX

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
По умолчанию tween не останавливается

Сабж. Честно говоря проблема может оказаться и шире, но ИМХО корень злав моей сцене именно в неработающем .stop(); для твин-анимации.
Код выполняет слайд-шоу для 4х подгружаемых изображений.
Код:
import mx.transitions.*;
var my_mcl:MovieClipLoader = new MovieClipLoader();
var my_lst:Object = new Object();
my_mcl.addListener(my_lst);

speed = 2;//скорость изменения прозрачности
timer = 3000;//задержка перед сменой изображения
imageCount = 4;//количество подгружаемых картинок

// создание верхнего и нижнего мувика
_root.mc.createEmptyMovieClip("down",0);
_root.mc.createEmptyMovieClip("up",getNextHighestDepth());

//загрузка исходных картинок
_root.my_mcl.loadClip("1.jpg",_root.mc.down);
_root.my_mcl.loadClip("2.jpg",_root.mc.up);
_root.my_mcl.onLoadComplete = function() {
	_root.my_mcl.onLoadComplete = function() {
		//назначение прозрачности верхнему слою
		_root.mc.up._alpha = 0;
	};
	//задержка перед началом функции
	var time_pause = setTimeout(changeAlpha, timer);
};
//собственно функция
function changeAlpha() {
	//анимация альфы для верхнего изображения
	var tweenFirst = new Tween(_root.mc.up, "_alpha", mx.transitions.easing.None.easeNone, 0, 100, speed, true);
	tweenFirst.onMotionFinished = function() {
		tweenFirst.stop();
		slider();
	};
}
function slider() {
	//проверка вхождения в цикл и назначение переменной
	//переменные отображают текущую верхнюю и нижнюю картинку
	if (!k) {
		k = 2;
	}
	if (k>imageCount) {
		k = 1;
	}
	n = k+1;
	if (n>imageCount) {
		n = 1;
	}
	_root.my_mcl.loadClip(k+".jpg",_root.mc.down);

	_root.my_lst.onLoadComplete = function() {
		_root.mc.up._alpha = 0;
		_root.my_mcl.loadClip(n+".jpg",_root.mc.up);

		_root.my_lst.onLoadComplete = function() {
			//задержка перед анимацией
			setTimeout(cycleAlpha,timer);
			function cycleAlpha() {
				var cycleTween = new Tween(_root.mc.up, "_alpha", mx.transitions.easing.None.easeNone, 0, 100, speed, true);
				cycleTween.onMotionFinished = function() {
					//проверка наличия tween-анимация до и после ее остановки
					trace("Aftre: "+cycleTween);
					cycleTween.stop();
					trace("Before: "+cycleTween);
					//увеличение переменной
					k++;
					//зацикливание функции
					slider();
				};
			}
		};
	};
}
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!


Последний раз редактировалось TanaTiX; 29.03.2008 в 00:14.