Comunidad de diseño web y desarrollo en internet online

Ayuda en juego de drag and drop AS3

Citar            
MensajeEscrito el 28 Jun 2013 04:00 pm
Hola, estoy desarrollando un juego para niños donde aparecen fotos de animales y el usuario debe con un Drag&drop ponerle el nombre al animal y lo logre con un codigo que encontre al navegar en la web pero necesito que me ayuden con algo. el codigo que tengo es este:

//Array to hold the target instances, the drop instances,
//and the start positions of the drop instances.
var hitArray:Array = new Array(hitTarget1, hitTarget2, hitTarget3, hitTarget4, hitTarget5);
var dropArray:Array = new Array(drop1, drop2, drop3, drop4, drop5);

var positionsArray:Array = new Array();

//This adds the mouse down and up listener to the drop instances
//and add the starting x and y positions of the drop instances
//into the array.
for (var i:int = 0; i < dropArray.length; i++) {
dropArray[i].buttonMode = true;
dropArray[i].addEventListener(MouseEvent.MOUSE_DOWN, mdown);
dropArray[i].addEventListener(MouseEvent.MOUSE_UP, mUp);

positionsArray.push({xPos:dropArray[i].x, yPos:dropArray[i].y});
}

//This drags the object that has been selected and moves it
//to the top of the display list. This means you can't drag
//this object underneath anything.
function mdown(e:MouseEvent):void {
e.currentTarget.startDrag();
setChildIndex(MovieClip(e.currentTarget), numChildren - 1);
}

//This stops the dragging of the selected object when the mouse is
//released. If the object is dropped on the corresponding target
//then it get set to the x and y position of the target. Otherwise
//it returns to the original position.
function mUp(e:MouseEvent):void {
var dropIndex:int = dropArray.indexOf(e.currentTarget);
var target:MovieClip = e.currentTarget as MovieClip;

target.stopDrag();

if (target.hitTestObject(hitArray[dropIndex])) {
target.x = hitArray[dropIndex].x;
target.y = hitArray[dropIndex].y;
}else{
target.x = positionsArray[dropIndex].xPos;
target.y = positionsArray[dropIndex].yPos;
}
}


Como puedo hacer que cuando se acierten todos los animales se ejecute un movieclip con una animacion de felicitaciones? algo como esto:

// si todos los hitTarget estan en su lugar, entonces ejecuta esto
bienhecho_mc.gotoAndPlay ("startbienhecho");

no se mucho de AS3, si alguien puede hacerle el cambio necesario al codigo y/o explicar la logica que esto lleva le estaria muy agradecido; ojala la solucion sea sencilla, espero me puedan ayudar, mil gracias.

Por henrygovi

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Jul 2013 12:43 pm
Hola henrygovi , yo me definiría una variable de tippo númerico y la inicializaría a 0.
Cada vez que en la función "mouseUp" la coincidencia sea correcta (creo que es en el hitTest) incrementaría el valor de dicha variable.
Una vez incrementada compararía si ha llegado al numero máximo de animales que hay. En caso afirmativo, "gotoandplay("startbienhecho")", en caso contrario, lo dejas tal cual.

Espero que te sirva

Por Palacio

Claber

198 de clabLevel



 

firefox
Citar            
MensajeEscrito el 12 Jul 2013 07:23 pm
Muchas a tu ayuda pude resolver el problema, les dejo el codigo por si a alguien le sirve.

Código :

//variable que cuenta los aciertos
var dropCount:uint = 0;

//------------------------------

var hitArray:Array = new Array(hitTarget1, hitTarget2, hitTarget3, hitTarget4, hitTarget5);
var dropArray:Array = new Array(drop1, drop2, drop3, drop4, drop5);

var positionsArray:Array = new Array();

for (var i:int = 0; i < dropArray.length; i++) {
         dropArray[i].buttonMode = true;
       dropArray[i].mouseChildren = false;
         dropArray[i].addEventListener(MouseEvent.MOUSE_DOWN, mdown);
         dropArray[i].addEventListener(MouseEvent.MOUSE_UP, mUp);
                 
         positionsArray.push({xPos:dropArray[i].x, yPos:dropArray[i].y});
}

function mdown(e:MouseEvent):void {
      e.currentTarget.startDrag();
      setChildIndex(MovieClip(e.currentTarget), numChildren - 1);
}

function mUp(e:MouseEvent):void {
         var dropIndex:int = dropArray.indexOf(e.currentTarget);
         var target:MovieClip = e.currentTarget as MovieClip;
                 
         target.stopDrag();
             
         if (target.hitTestObject(hitArray[dropIndex])) {
                   target.x = hitArray[dropIndex].x;
                   target.y = hitArray[dropIndex].y;
               
               //incrementar 1 con cada acierto en la variable dropCount
               dropCount++;               
               
         }else{
                   target.x = positionsArray[dropIndex].xPos;
                   target.y = positionsArray[dropIndex].yPos;
         }

      //al llegar a 5 (para este caso)se ejecuta el movieclip con la animacion de bienhecho
                if(dropCount == 5){
      bienhecho_mc.gotoAndPlay ("start");
      }
}

Por henrygovi

1 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.