![]() |
|
||||||||||
|
|
|
|||||
|
Сабж. Честно говоря проблема может оказаться и шире, но ИМХО корень злав моей сцене именно в неработающем .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. |
|
|||||
|
Регистрация: Apr 2007
Сообщений: 1,369
|
Это лишнее, Вы останавливаете то, что уже остановилось
![]() И это так же: Зачем Вы везде _root используете? Про это вообще молчу. _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);
};
Создайте общую функцию загрузки с одним и событием
__________________
john |
|
|||||
|
Дело в том, что если не остановить твин, то при повторном посещении страницы он наверняка наложится на новый. При этом можно будет наблюдать мигание всего и вся. Уже был такой печальный опыт
В данном примере представлен лишь голый код вне целостного проекта.А чем руты плохи? Цитата:
Заранее спасибо за помощь.
__________________
Ну все, теперь Забава м-о-я. Гы-гы, а корабль мой! |
|
|||||
|
Регистрация: Apr 2007
Сообщений: 1,369
|
Ну вроде такого:
import mx.utils.Delegate;
var mcl:MovieClipLoader = new MovieClipLoader();
this.onLoadInit = Delegate.create(this, Init);
mcl.addListener(this);
function Init(target:MovieClip) {
if (a<b) {//условие какое-то, если надо;
loadMc(path,mc);//ну, или другое что-то делаем;
}
}
function loadMc(url:String, target:MovieClip) {
mcl.loadClip(url,target);
}
Цитата:
__________________
john |
|
|||||
|
Регистрация: Apr 2007
Сообщений: 1,369
|
Ок. Кстати, Вы не на то навешали:
А надо на:
__________________
john |
|
|||||
|
Это так что ли?
_root.my_lst.onLoadComplete=new Object(timeObj);
timeObj = setTimeout(cycleAlpha,timer);
function cycleAlpha() {...
![]()
__________________
Ну все, теперь Забава м-о-я. Гы-гы, а корабль мой! |
|
|||||
|
Регистрация: Apr 2007
Сообщений: 1,369
|
Нет! Внимательней.
my_mcl - это у Вас MovieClipLoader, а надо на объект вешать, т.е. на my_lst. Вы же его объектом сделали: Поэтому, та срашная конструкция и не работает. Ведь Вы подписали так: А my_lst не присвоили ивент. Но, мне честоно говоря, страшно что будет, когда та махина заработает ![]()
__________________
john |
|
|||||
|
Цитата:
...и вообще что-то я на ночь сильно запутался. Буду надеятся, что утром или все пойму или кто-то предложит не такое "страшное" решение ![]()
__________________
Ну все, теперь Забава м-о-я. Гы-гы, а корабль мой! |
![]() |
![]() |
Часовой пояс GMT +4, время: 18:26. |
|
|
« Предыдущая тема | Следующая тема » |
|
|