Итак, соль. Есть простой анимационный ролик (1) AS2, который загружается в другой (2) AS3. 1 к слову начинается с пустого кадра, после которого идет 2 кадра с анимацией. На анимациях внутри него кое-где стоит stop();, чтобы стопорить анимацию. Не является экземпляром какого-либо класса-потомка Movie Clip. Тупо анимация и stop(); в конце нее. Далее. перейдем ко 2.

Код AS3:
loaderImage = new Loader();
loaderImage.contentLoaderInfo.addEventListener(Event.COMPLETE,imageLoaded);
loaderImage.load(new URLRequest(imageLink+"?dummy=" + Math.random()));
private function imageLoaded(e:Event){image = new MovieClip();
image = e.target.content;
}
Далее добавляем его в список отображения addChild(image);
Все работает прекрасно. НО! Использую тот же самый loaderImage для нового запроса на загрузку - у image тут же слетает всякая реакция на расставленные stop();. Не видит их и гоняет все по циклу.
Вопрос, думаю, ясен - как избежать такого поведения?
Сделал в качестве эксперимента другой лоадер loaderImage1 и передал загрузку ему, а не loaderImage. Итог не изменился. Слетает и все.
Добавлено через 1 час 32 минуты
Вот полный код

Код AS3:
package{
import flash.display.*;
import flash.net.*;
import flash.events.*;
import flash.text.*;
import flash.utils.*;
import flash.system.*;
public class MySlider extends MovieClip{
//переменные
public function MySlider(){
//КОНСТРУКТОР
}
private function startSlider(){
loaderImage.load(new URLRequest(imagesLink[currentImage]+"?dummy=" + Math.random()));
timer = new Timer(2000,1);
timer.addEventListener(TimerEvent.TIMER,imageTimered);
timer.start();
}
private function imageLoaded(e:Event){
isLoaded = true;
images[currentImage] = new MovieClip();
images[currentImage] = MovieClip(e.target.content);
//очень любопытно: если добавить ТУТ эти 2 строчки, а не в sliderIteration();
// addChild(images[currentImage]);
// images[currentImage].gotoAndStop(2);
// - все работает, потому что видимо
//loaderImage.load вызывается позже в sliderIteration(), после отсчета таймера
if(isTimered&&isLoaded){
sliderIteration();
}
}
private function imageTimered(e:TimerEvent){
isTimered = true;
e.target.removeEventListener(TimerEvent.TIMER,imageTimered);
if(isTimered&&isLoaded){
sliderIteration();
}
}
private function sliderIteration(){
if(isTimered&&isLoaded){
isTimered = isLoaded = false;
addChild(images[currentImage]);
images[currentImage].gotoAndStop(2);
previousImage = currentImage;
if(currentImage<imagesLink.length-1){
currentImage++;
}else{
currentImage = 0;
}
loaderImage.load(new URLRequest(imagesLink[currentImage]+"?dummy=" + Math.random()));
timer = new Timer(delay,1);
timer.addEventListener(TimerEvent.TIMER,imageTimered);
timer.start();
}
}
}
}