Cercherò di spiegare il più chiaramente possibile (spero):

Premetto che AS3 l'ho imparato da autodidatta semplicemente guardando un pò di pagine di codice e cercando di capirci qualcosa (senza leggere guide ne altro).
Mi son messo quindi a fare questo slideshow... e miracolosamente son riuscito a farlo funzionare!
Ora arriva il problema:
visto che devo necessariamente caricare delle immagini png trasparenti ho cercato di dire a sto benedetto coso di svuotare il container corrente, prima di caricare il successivo.
Il fatto è che elimina il contenuto troppo presto e ci mette tempo a caricare l'immagine successiva (credo a causa del timer di delay), invece di tenerla li ferma per un pò e svuotare il container immediatamente prima di caricare quella dopo.
Questo problema è ancora più evidente quando si stoppa il timer e si utilizzano i bottoni previous e next: vorrei che l'immagine si bloccasse e il container si svuotasse solamente premendo uno dei due bottoni!

Spero di aver reso l'idea
Qualcuno mi saprebbe aiutare?

Grazie in anticipo!

p.s. ecco qui il codice completo

codice:
import caurina.transitions.Tweener;

const TIMER_DELAY:int = 3000;
const FADE_TIME:Number = 1;

var bolPlaying:Boolean = true;
var currentContainer:Sprite;
var intCurrentSlide:int = -1;
var intSlideCount:int;
var slideTimer:Timer;
var sprContainer1:Sprite;
var sprContainer2:Sprite;
var slideLoader:Loader;
var strLink:String = "";
var strTarget:String = "";
var strXMLPath:String = "list.xml";
var xmlLoader:URLLoader;
var xmlSlideshow:XML;

function initSlideshow():void {
	buttons.visible = false;
	linkButton.visible = false;
	
	xmlLoader = new URLLoader();
	xmlLoader.addEventListener(Event.COMPLETE, onXMLLoadComplete);
	xmlLoader.load(new URLRequest(strXMLPath));
	
	slideTimer = new Timer(TIMER_DELAY);
	slideTimer.addEventListener(TimerEvent.TIMER, nextSlide);
	sprContainer1 = new Sprite();
	sprContainer2 = new Sprite();
	images.addChild(sprContainer1);
	images.addChild(sprContainer2);
	currentContainer = sprContainer2;
	
	linkButton.addEventListener(MouseEvent.CLICK, goToWebsite);
	buttons.plButton.addEventListener(MouseEvent.CLICK, togglePause);
	buttons.stpButton.addEventListener(MouseEvent.CLICK, togglePause);
	buttons.nextButton.addEventListener(MouseEvent.CLICK, nextSlide);
	buttons.prevButton.addEventListener(MouseEvent.CLICK, previousSlide);
	
	buttons.plButton.visible = false;
}

function onXMLLoadComplete(e:Event):void {
	buttons.visible = true;
	linkButton.visible = true;
	xmlSlideshow = new XML(e.target.data);
	intSlideCount = xmlSlideshow..image.length();
	switchSlide(0);
}

function fadeSlideIn(e:Event):void {
	addSlideContent();
	Tweener.addTween(currentContainer, {alpha:1, time:FADE_TIME, onComplete:onSlideFadeIn});
}

function onSlideFadeIn():void {
	if(bolPlaying && !slideTimer.running)
		slideTimer.start();
	currentContainer.removeChildAt(0);
}

function togglePause(e:MouseEvent):void {
	if(bolPlaying) {
		buttons.plButton.visible = true;
		buttons.stpButton.visible = false;
		bolPlaying = false;
		slideTimer.stop();
		
	} else {
		buttons.plButton.visible = false;
		buttons.stpButton.visible = true;
		bolPlaying = true;
		slideTimer.reset();
		slideTimer.start();
	}
}

function switchSlide(intSlide:int):void {
	if(!Tweener.isTweening(currentContainer)) {
		
		if(slideTimer.running)
			slideTimer.stop();
		
		intCurrentSlide = intSlide;
		
		if(currentContainer == sprContainer2)
			currentContainer = sprContainer1;
		else
			currentContainer = sprContainer2;
		
		currentContainer.alpha = 0;
		images.swapChildren(sprContainer2, sprContainer1);
		
		clearLoader();
		
		slideLoader = new Loader();
		slideLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, fadeSlideIn);
		slideLoader.load(new URLRequest(xmlSlideshow..image[intCurrentSlide].@src));
		
		strLink											= xmlSlideshow..image[intCurrentSlide].@link;
		strTarget										= xmlSlideshow..image[intCurrentSlide].@target;
	}
}

function goToWebsite(e:MouseEvent):void {
	if(strLink != "" && strLink != null) {
		navigateToURL(new URLRequest(strLink), strTarget);
	}
}

function nextSlide(e:Event = null):void {
	if(intCurrentSlide + 1 < intSlideCount)
		switchSlide(intCurrentSlide + 1);
	else
		switchSlide(0);

}

function previousSlide(e:Event = null):void {
	if(intCurrentSlide - 1 >= 0)
		switchSlide(intCurrentSlide - 1);
	else
		switchSlide(intSlideCount - 1);
}

function clearLoader():void {
	try {
		var li:LoaderInfo = slideLoader.contentLoaderInfo;
		if(li.childAllowsParent && li.content is Bitmap){
			(li.content as Bitmap).bitmapData.dispose();
		}
	} catch(e:*) {}
}

function addSlideContent():void {
	while(currentContainer.numChildren){Bitmap(currentContainer.getChildAt(0)).bitmapData.dispose(); currentContainer.removeChildAt(0);}

	var bitMp:Bitmap =  new Bitmap(Bitmap(slideLoader.contentLoaderInfo.content).bitmapData.clone());
	currentContainer.addChild(bitMp);
}

initSlideshow();