Ciao. Devo creare una slideshow che in pratica mostri in loop continuo una decina di immagini, pescandole da un file XML, con transazione con effetto dissolvenza. Fin qui nessun problema, perchè ho trovato un ottimo script perfettamente funzionante.
Il punto è che io oltre alle immagini devo mostrare un breve testo descrittivo, il quale è salvato nell'XML come attributo.
Siccome vorrei che il riquadro contenente il testo descrittivo apparisse da sotto anzichè avere lo stesso effetto dissolvenza dell'immagine, ho provato a creare un movieclip con queste caratteristiche (rettangolo + testo dinamico) e l'ho lasciato nella libreria, con l'idea di fare un attachMovie nel momento in cui lo script mi carica l'immagine relativa.
Però non funziona, ho provato e riprovato ma non funziona e non riesco a capire dove sbaglio. Sotto trovate il codice completo (in neretto le modifiche fatte da me ma non funzionanti). Ve lo spiego un attimo perchè è molto lungo.
In pratica lui crea un arrai con tutte le immagini presenti nell'XML (function parse), quindi controlla se la presentazione è random oppure no (function ImageGen), a quel punto carica una immagine nel loader1 e quando ha finito di caricarsi ne modifica la profondità, scambiandola con il loader2, e applica una variazione sull'alpha da 0 a 100 per un certo intervallo di tempo (function loadImages e createLoader), e così di seguito.

codice:
// set random # variables - each must be 0 for first 'while' loop below
var randomNum = 0;
var randomNumLast = 0;

// parent container
var container_mc = this.createEmptyMovieClip("container",0);
// movie clip containers
container_mc.createEmptyMovieClip("loader1_mc",2);
container_mc.createEmptyMovieClip("loader2_mc",1);

// preload watcher
this.createEmptyMovieClip("watcher_mc",100);

// load xml
images_xml = new XML();
images_xml.ignoreWhite=true;
images_xml.onLoad = parse;
images_xml.load("images.xml");

function parse(success) {
	if (success) {
		imageArray = new Array();
		var root = this.firstChild;
		_global.numPause = Number(root.attributes.timer * 1000);
		_global.order = root.attributes.order;
		_global.looping = root.attributes.looping;
		_global.fadetime = Number(root.attributes.fadetime);
		_global.xpos = Number(root.attributes.xpos);
		_global.ypos = Number(root.attributes.ypos);
		var imageNode = root.lastChild;
		var s=0;
		while (imageNode.nodeName != null) {
			imageData = new Object;
			imageData.path = imageNode.attributes.path;
			imageData.desc = imageNode.attributes.desc;
			imageArray[s]=imageData;
			imageNode = imageNode.previousSibling;
			s++;
		}
		// place parent container
		container_mc._x = _global.xpos;
		container_mc._y = _global.ypos;
		// parse array
		imageArray.reverse();
		imageGen(imageArray);
	} else {
		trace('problem');
	}
}

// depth swapping
function swapPlace(clip,num) {
	eval(clip).swapDepths(eval("container_mc.loader"+num+"_mc"));
}

function loadImages(data,num) {
	if (i==undefined || i == 2) {
		i=2;
		createLoader(i,data,num);
		i=1;
	} else if (i==1) {
		createLoader(i,data,num);
		i=2;
	}
}
function createLoader(i,data,num) {
	thisLoader=eval("container_mc.loader"+i+"_mc");
	thisLoader._alpha=0;
	thisLoader.loadMovie(data[num].path);
	watcher_mc.onEnterFrame=function () {
		var picLoaded = thisLoader.getBytesLoaded();
		var picBytes = thisLoader.getBytesTotal();
		if (isNaN(picBytes) || picBytes < 4) {
			return;
		}
		if (picLoaded / picBytes >= 1) {
			swapPlace("container_mc.loader2_mc",1);
			alphaTween = new mx.transitions.Tween(thisLoader, "_alpha", mx.transitions.easing.Regular.easeOut,0,100,_global.fadetime,true);
			timerInterval = setInterval(imageGen,_global.numPause,data);
			thisLoader.attachMovie("text_mc", "mc_text", 100, {_x:0, _y:0});
			thisLoader.mc_text.description.text = data.desc;
			delete this.onEnterFrame;
			
		}
	}
}
function imageGen(data) {
	// random, or sequential?
	if (_global.order=="random") {
		// choose random # between 0 and total number of images
		while (randomNum == randomNumLast) {
			randomNum = Math.floor(Math.random() * data.length);
			trace(randomNum);
		}
		loadImages(data,randomNum);
		randomNumLast = randomNum;
	} else if (_global.order=="sequential") {
		// start at 0, increment to total number of images, then drop back to zero when done
		if (p==undefined || p==data.length && _global.looping=="yes") { p=0; } else { break; }
		loadImages(data,p);
		p++;
	} else {
		trace ("order attribute in xml isn't correct - must specify either 'random' or 'sequential'");
	}
	clearInterval(timerInterval);
}
stop();

Aiutatemi