Tengo un inconveniente menor con un proyecto.
El proyecto hace lo siguiente:
1. Carga el listado de imagenes contenido en un XML
2. Crea dinamicamente 35 MC en los cuales cargan dinamicamente imagenes (del XML) mediante loads (y listeners), y escucha los eventos de cuando se le acerca y aleja el raton haciendo que aparezca y desaparezca el MC seleccionado usando Tweens.
En la biblioteca se creo un MC que a su ves contiene otro con el nombre img_mc, donde se carga la imagen.
La parte que no he logrado que funcione es que cuando el MC ha sido seleccionado y termina de desaparecer cargue en ese mismo MC otra imagen al azar, usando el Listener y el load que previamente se le fue asignado.
He aqui el código:
Código ActionScript :
import mx.transitions.Tween;
import mx.transitions.easing.*;
/* El XMl */
var Mi_XML:XML = new XML();
Mi_XML.ignoreWhite = true;
Mi_XML.onLoad = function(success:Boolean) {
if (success) {
elXMlMenu();
} else {
trace("no Jalo la onda jiñor");
}
};
var menuDat:Array = new Array();
function elXMlMenu():Void{
var datos:Array = Mi_XML.firstChild.childNodes
for(var i=0; i<datos.length;i++) menuDat.push(datos[i].attributes.src);
creaMenu();
}
Mi_XML.load("imagenes/galeria.xml");
/* fin del XML */
/*El menu */
// Contenedor Menu
this.createEmptyMovieClip("contMenu_mc", 1);
// Cuadros menu
creaMenu = function():Void {
var cuadro_mc:MovieClip;
var numC:Number = 35;
var multiplo:Number;
var spciox:Number = 0;
var spcioy:Number = 0;
var cont:Number;
var imgCarga:String;
var cuantascol:Number = 7;
for(var i:Number = 0; i < numC; i++){
contMenu_mc.attachMovie("imgc", "imgc" + i + "_mc", i);
cuadro_mc = contMenu_mc["imgc" + i + "_mc"];
cuadro_mc._x = spciox * 144;
cuadro_mc._y = spcioy;
spciox += 1;
cont = i + 1;
multiplo = cont % cuantascol;
if(multiplo == 0){
spciox = 0;
spcioy += 144;
}
cuadro_mc.onRollOver = turnOn;
cuadro_mc.onRollOut = cuadro_mc.onReleaseOutside = turnOff;
this["mi_mcl" + i] = new MovieClipLoader();
this["mi_mclL" + i] = new Object();
this["mi_mclL"+ i].onLoadInit = function(el_mc:MovieClip){
//trace("se cargo:" + el_mc);
picSlideTween = new Tween(el_mc, "_alpha", Regular.easeIn, 0, 100, 0.8, true);
picSlideTween.onMotionFinished = function() {
new Tween(el_mc, "_alpha", Regular.easeIn, 100, 0, 0.8, true);
}
}
this["mi_mclL"+ i].onLoadStart = function(mc:MovieClip){
//trace("ahora si mi chavo yia se esta cargando:" + mc);
mc._alpha = 0;
}
this["mi_mcl"+ i].addListener(this["mi_mclL"+ i]);
this["mi_mcl"+ i].loadClip(menuDat[i], cuadro_mc.img_mc);
}
reacomoda();
}
/* Redimencionar */
var stageL:Object = new Object();
stageL.onResize = function(){
reacomoda();
}
Stage.addListener(stageL);
reacomoda = function():Void
{
contMenu_mc._x = (Stage.width - contMenu_mc._width) / 2;
contMenu_mc._y = (Stage.height - contMenu_mc._height) / 2;
}
function ruleta(min:Number, max:Number):Number {
var randomNum:Number = Math.floor(Math.random() * (max - min + 1)) + min;
return randomNum;
}
function turnOn() {
new Tween(this.img_mc, "_alpha", Regular.easeIn, 0, 100, 0.8, true);
}
function turnOff(){
imgAzar = ruleta(0, menuDat.length -1);
este = this.img_mc;
apagar = new Tween(this.img_mc, "_alpha", Regular.easeOut, 100, 0, 0.8, true);
apagar.onMotionFinished = function() {
this["mi_mcl"].loadClip(menuDat[imgAzar], este)
}
}
Cada MC imgc0_mc ... imgc34_mc tiene su MovieClipLoader mi_mcl0 .... mi_mcl34, así que en la función turnOff() al terminar el Tween invoco el siguiente código this["mi_mcl"].loadClip(menuDat[imgAzar], este), como saber cual MovieClipLoader le corresponde al MC que es invocado y como cargar en este mismo una nueva imagen?
Salu2 y Gracias =D
