Bueno, mira, supongamos que tienes varios movieclips cada movieclip, tiene dos estados, que llamaremos "tapado" y "destapado" ok?
Pense que seria facil crear este codigo, pero no fue tan facil como pense cuando inicie a programarlo
de todas forma ya hice la mayor parte, y funciono, te explico:
Vamos a crear un MovieClip vacio en el escenario que llamaremos "memorama_mc" y pondremos todo el codigo dentro de memorama_mc:
Código ActionScript :
var intervalo:Number;
var imagenes_arr:Array = new Array();
imagenes_arr.push("uno_mc");
imagenes_arr.push("dos_mc");
imagenes_arr.push("tres_mc");
imagenes_arr.push("cuatro_mc");
imagenes_arr.push("cinco_mc");
//Creamos las imagenes del memorama
crear( imagenes_arr, "tapa_mc" );
//Creamos los duplicado de las imagenes del memorama
crear( imagenes_arr, "tapa_mc" );
//Ordenamos todas las imagenes de forma aleatoria
ordenar();
function crear( img_arr:Array, tapa_str:String )
{
var aux:MovieClip;
var nom:String;
for( var i in img_arr )
{
nom = ( this["mem" + i] == undefined )? "mem" + i : "cop" + i ;
aux = this.createEmptyMovieClip(nom, this.getNextHighestDepth());
aux.e = true;//Estado tapado
aux.t = tapa_str;//id de biblioteca de la tapa
aux.f = img_arr[i];//id de biblioteca de la imagen
aux.i = i;
aux.attachMovie( aux.t, "art", 0);
aux.onRelease = function( Void ):Void
{
this.cambio();
this._parent.verificar( this );
};
aux.cambio = function( Void ):Void
{
this.e = !this.e;
this.attachMovie( this.e ? this.t : this.f, "art", 0);
};
}
}
function verificar( aux:MovieClip ):Void
{
for(var i in this)
{
if( this[i] != aux && this[i].onRelease != undefined )
{
if( aux.i == this[i].i && !this[i].e )
{
delete aux.onRelease;
delete this[i].onRelease;
completo();
break;
}
else if( !this[i].e )
{
for(var j in this)this[j].enabled = false;
intervalo = setInterval(this,"fallo",500,this[i],aux);
break;
}
}
}
}
function ordenar( Void ):Void
{
for(var i in this)
{
this[i]._x = (this[i]._width + 10) * this[i].i;
this[i]._y = (i.substr(0,3) == "cop")? this[i]._width + 10 : 0;
}
}
function fallo(aux1:MovieClip, aux2:MovieClip)
{
clearInterval(intervalo);
for(var i in this)this[i].enabled = true;
aux1.cambio();
aux2.cambio();
}
function completo(Void):Void
{
for(var i in this) if(this[i].onRelease) return;
//Aqui incia el codigo de lo que pasa si ganaste
trace("GANASTE");
}
La funcion "ordenar" ordena todo de forma normal, te toca a ti que los ordene de forma aleatoria para que sea un juego en realidad.
"uno_mc" "dos_mc" "tres_mc" "cuatro_mc" "cinco_mc" y "tapa_mc" son ids de clips en la biblioteca que representan las imagenes de las cartas y "tapa_mc" representa la parte trasera de la carta, osea como si estuviera volteada.
Ya esta el mecanismo, solo falta eso de "ordenar",
Suerte.