ojala me puedan echar una mano con esto, he realizado un rompecabezas y estoy en la parte de reubicar las fichas de una forma randomica,
creo dos array, uno que contiene las posiciones x,y iniciales, y otro en la funcion desordenar que los mezcla para poder adjudicar a cada uno un valor diferente en posicion
Pero me lanza las fichas sin un orden aparente, mi teoria es que esta dandole las coordenadas dentro de cada pieza por eso el espacio tan grande, pero realmente no veo como solucionarlo
aca el as3
Código ActionScript :
import fl.transitions.*; import fl.transitions.easing.*; import flash.display.MovieClip; var contenedor:Sprite = new Sprite(); addChild(contenedor); contenedor.x=100; contenedor.y=100; var cuadrados:Array = new Array(); var mc:cuadradito; var mf:fondo; var separacion:Number = 5; var ancho:Number = 116; var alto:Number = 116; var columnas:Number = 4; var filas:Number = 3; var totalCuadrados:uint = 12; var i:uint=0; //creamos el array que contiene las posiciones var posiciones:Array=new Array() function crear_piezas(){ for(i=0; i < totalCuadrados; ++i) { var pieza = new MovieClip(); //le damos un nombre a cada pieza pieza.name=["Pieza" + (i+1)]; contenedor.addChild(pieza); //trace(pieza.x, pieza.y) mc = new cuadradito(); mf = new fondo(); mf.x = contenedor.x mf.y = contenedor.y mc.x = ancho*(i%columnas); mc.y = alto*Math.floor(i/columnas) // Lo desplazamos hacia abajo para notar que se van agregando cuadrados.push(mc); pieza.addChild(mf); pieza.addChild(mc); //le damos la funcion de botones pieza.addEventListener(MouseEvent.MOUSE_DOWN, drag2); pieza.addEventListener(MouseEvent.MOUSE_UP, drop2) pieza.buttonMode = true; //le damos la mascara a cada pieza mf.mask=cuadrados[i] posiciones.push ({x:cuadrados[i].x,y:cuadrados[i].y});//llenamos el array para luego hacer el random de posiciones trace([i]+".- Array Posiciones Iniciales: "+posiciones[i].x,posiciones[i].y ) }} crear_piezas(); //creamos el array con las posiciones desordenadas var arr2:Array=new Array() function DesordenaPiezas (NumMin, NumMax) { for (var n=NumMin; n<=NumMax; n++) { var PosTemp =Math.floor(Math.random()* posiciones.length); arr2.push({x:posiciones[PosTemp].x,y:posiciones[PosTemp].y}); //sacamos la posicion de las posiciones iniciales para no repetir posiciones.splice(PosTemp,1); trace([n]+".- Array Posicion Random="+arr2[n].x ,arr2[n].x ) contenedor.getChildAt(1) var randomX:Tween = new Tween(contenedor.getChildAt(n),"x",Bounce.easeOut,contenedor.getChildAt(n).x, arr2[n].x,1, true) var randomY:Tween = new Tween(contenedor.getChildAt(n),"y",Bounce.easeOut,contenedor.getChildAt(n).y, arr2[n].y, 1, true) } } DesordenaPiezas(0, posiciones.length-1); //Funciones de Drag and Drop de las fichas function drag2(e:MouseEvent):void{ e.currentTarget.startDrag(); trace(e.currentTarget.name) trace(e.currentTarget.x, e.currentTarget.y) } function drop2(e:MouseEvent):void{ stopDrag(); if (e.currentTarget.x <=58 && e.currentTarget.x >=-58 && e.currentTarget.y <=58 && e.currentTarget.y >=-58) { var correctX:Tween = new Tween(e.currentTarget,"x",Bounce.easeOut, 0, 0,1, true) var correctY:Tween = new Tween(e.currentTarget,"y",Bounce.easeOut, 0, 0,1, true) e.currentTarget.removeEventListener(MouseEvent.MOUSE_DOWN, drag2); e.currentTarget.buttonMode = false; trace("la pieza esta colocada") } }
Aca el archivo fla
Muchas gracias a todos