Les hago brevemente un resumen de cual es mi situacion:
Tengo una película que en base a un XML me carga uans imagenes, que cuando les hago click, necesito que se me cargue un SWF externo y que éste muestre ciertas variables que le pasé con el click.
Tengo este código:
Código :
stop();
System.useCodepage = true;
XML.prototype.ignoreWhite = true;
import mx.transitions.Tween;
var separacion:Number = 20;
var ImagenesTotal:Number = 5;
var IMG_array:Array; // array donde metemos los elementos del XML
var distancia:Number = 0;
var miniaturasXML:XML = new XML();
miniaturasXML.onLoad = mostrarMiniaturas;
miniaturasXML.load("miXML.xml");
function mostrarMiniaturas():Void {
IMG_array = this.firstChild.childNodes; // guardo todo el contenido del XML en el array
var lienzo:MovieClip = _root.createEmptyMovieClip("lienzo_miniaturas", _root.getNextHighestDepth());
lienzo._x = 10;
lienzo._y = 0;
for (var k:Number = 0; IMG_array[k]; k++) {
var imgSrc:String = IMG_array[k].childNodes[3].firstChild.nodeValue;
var price:String = IMG_array[k].childNodes[2].firstChild.nodeValue;
var destiny:String = IMG_array[k].childNodes[0].firstChild.nodeValue;
crearMiniatura(k, imgSrc, price, destiny);
}
}
function crearMiniatura(Numero:Number, Imagen:String, Precio:String, Destino:String) {
var bajo_clip:MovieClip = lienzo_miniaturas.createEmptyMovieClip("bajo_" + Numero, lienzo_miniaturas.getNextHighestDepth()); // contendrá el marco de la miniatura
var clip:MovieClip = lienzo_miniaturas.createEmptyMovieClip("foto_" + Numero, lienzo_miniaturas.getNextHighestDepth());// clip contendrá la imagen
var mi_mcl:MovieClipLoader = new MovieClipLoader();
var miListener:Object = new Object();
mi_mcl.addListener(miListener);
mi_mcl.loadClip(Imagen, clip); // cargo la imagen
miListener.onLoadStart = function(target_mc:MovieClip) {
target_mc._alpha = 0; // cuando comienza la carga de la imagen pongo al _alpha a 0
};
miListener.onLoadProgress = function(target_mc:MovieClip, bytesLoaded:Number, bytesTotal:Number) {
// hacer un loader,
};
miListener.onLoadInit = function(target_mc:MovieClip) {
// recolocamos la imagen (todavía está oculta, con _alpha=0)
if(target_mc._width > 140) {
imgWidth = (Stage.width-(ImagenesTotal-0)*separacion)/ImagenesTotal;
} else {
imgWidth = target_mc._width;
}
if(target_mc._height > 100) {
imgHeight = 100;
} else {
imgHeight = target_mc._height;
}
target_mc._width = imgWidth;
target_mc._height = imgHeight;
target_mc._x = distancia;
target_mc._y = 15
txtPrice.text = Precio;
txtPrice._x = distancia;
distancia = distancia + target_mc._width + 15;
// recolocamos el marco que rodea a la foto
bajo_clip._x = target_mc._x-5;
bajo_clip._y = target_mc._y-5;
// dibujamos el marco
with (bajo_clip) {
beginFill(0xffffff);
lineStyle(1, 0xEEEEEE, 100);
lineTo(target_mc._width+10, 0);
lineTo(target_mc._width+10, target_mc._height+10);
lineTo(0, target_mc._height+10);
lineTo(0, 0);
endFill();
}
bajo_clip.onRelease = function() {
MostrarInfo(Numero, Imagen, Precio, Destino)
};
var myTween:Tween = new Tween(target_mc, "_alpha", mx.transitions.easing.Regular.easeOut, 0, 100, 2, true); // muestro la miniatura animando el _alpha hasta 100
};
};
function MostrarInfo(Numero:Number, Imagen:String, Precio:String, Destino:String)
{
var details:MovieClip = lienzo_miniaturas.createEmptyMovieClip("fotoww_" + Numero, lienzo_miniaturas.getNextHighestDepth());// clip contendrá la imagen
var details_mcl:MovieClipLoader = new MovieClipLoader();
var miListenerD:Object = new Object();
details_mcl.addListener(miListenerD);
details_mcl.loadClip("Details.swf?Precio=" + Numero, details); // cargo la imagen
miListenerD.onLoadStart = function(target_mc:MovieClip) {
//
};
miListenerD.onLoadProgress = function(target_mc:MovieClip, bytesLoaded:Number, bytesTotal:Number) {
// hacer un loader,
};
miListenerD.onLoadInit = function(target_mc:MovieClip) {
target_mc._x = 0;
target_mc._y = 0;
}
}
Las imagenes me las muestra correctamente, lo que no logro hacer, es la segunda parte. Alguien se le ocurre alguna otra forma de hacerlo? o que estoy haciendo mal?.
Desde ya, espero puedan ayudarme.
Saludos!
