Comunidad de diseño web y desarrollo en internet online

Movieclip con drag and drop as2 para dos coordenadas distintas.

Citar            
MensajeEscrito el 20 May 2012 11:04 pm
Hola! cómo están?. Mi nombre es Nati.
Quisiera saber si me pueden ayudar con un tema al que no le encuentro solución ya que si bien considero que sé algo de AS2, en este caso no puedo resolverlo por mi cuenta...estoy atascada!! y necesito resolverlo con bastante urgencia.
Tengo un archivo swf con un ejercicio en el que existen cuatro botones (drag1_mc, drag2_mc, drag3_mc y drag4_mc), que serían las respuestas, y que a su vez tengo que "arrastrar" hasta su casillero correspondiente (destino1_mc, destino2_mc, destino3_mc, destino4_mc) para que me dé la respuesta como correcta.
El código es el siguiente:

Código ActionScript :

stop();
avanzar_mc._visible=false;
avanzar2_mc._visible=false;
correctas_mc._visible=false;

respuesta1 = false;
respuesta2 = false;
respuesta3 = false;
respuesta4 = false;
respuesta5 = false;

corregir_mc._alpha = 50;
corregir_mc.enabled = false;
corregir_mc.onRelease = function() {
   if (respuesta1 && respuesta2 && respuesta3 && respuesta4) {
      avanzar_mc._visible=true;
      feed.frase.gotoAndStop("correcto");
      trace("correcto")
   } else {
      feed.frase.gotoAndStop("falso");
      avanzar2_mc._visible=true;
      correctas_mc._visible=true;
      corregir_mc._visible=false;
      guia_mc.gotoAndStop(2);
      trace("incorrecto")
   }
   drag1_mc.enabled = false;
   drag2_mc.enabled = false;
   drag3_mc.enabled = false;
   drag4_mc.enabled = false;
   trace(respuesta1)
   if (respuesta1 == true) { drag1_mc.gotoAndStop(2); } else { drag1_mc.gotoAndStop(3); }
   if (respuesta2 == true) { drag2_mc.gotoAndStop(2); } else { drag2_mc.gotoAndStop(3); }
   if (respuesta3 == true) { drag3_mc.gotoAndStop(2); } else { drag3_mc.gotoAndStop(3); }
   if (respuesta4 == true) { drag4_mc.gotoAndStop(2); } else { drag4_mc.gotoAndStop(3); }

   
   feed.play();
};

ocupado = 0;
ocupado2 = 0;
ocupado3 = 0;
this.destino1_mc.ocupado = false;
this.destino2_mc.ocupado = false;
this.destino3_mc.ocupado = false;
this.destino4_mc.ocupado = false;

function chequear(id, ejeX, ejeY)
{
   this["drag"+id+"_mc"].ub = false;
   for(var i:Number=1; i<5; i++)
   {
      if((this["drag"+id+"_mc"].hitTest(this["destino"+i+"_mc"])) && (!this["destino"+i+"_mc"].ocupado) && (this["destino"+i+"_mc"].hitTest(_root._xmouse, _root._ymouse, true)))
      {
         this["drag"+id+"_mc"]._x = this["destino"+i+"_mc"]._x;
         this["drag"+id+"_mc"]._y = this["destino"+i+"_mc"]._y;
         this["destino"+i+"_mc"].ocupado = true;
         this["drag"+id+"_mc"].ub = true;
         if(this["drag"+id+"_mc"].cual!= 0)
         {
            this["destino"+this["drag"+id+"_mc"].cual+"_mc"].ocupado = false;
         }
         this["drag"+id+"_mc"].cual = i;
         trace(this["drag"+id+"_mc"].correcta)
         if(this["drag"+id+"_mc"].cual == this["drag"+id+"_mc"].correcta)
         {
            this["respuesta"+id] = true;
         }
         else
         {
            this["respuesta"+id] = false;
         }
      }
   }
   
   if(!this["drag"+id+"_mc"].ub)
   {
      this["drag"+id+"_mc"]._x = this["drag"+id+"_mc"].xo;
      this["drag"+id+"_mc"]._y = this["drag"+id+"_mc"].yo;
      if(this["drag"+id+"_mc"].cual!= 0)
      {
         this["destino"+this["drag"+id+"_mc"].cual+"_mc"].ocupado = false;
      }
      this["drag"+id+"_mc"].cual = 0;
      this["respuesta"+id] = false;
   }
   todos = true;
   for(var i:Number=1; i<5; i++)
   {
      if(this["drag"+i+"_mc"].cual== 0)
      {
         todos = false
      }
   }
   if(todos)
   {
      corregir_mc.enabled = true;
      corregir_mc._alpha = 100;
   }

   eval("drag"+id+"_mc").stopDrag();
}

drag1_mc.onPress = function() { drag1_mc.startDrag(); };
drag2_mc.onPress = function() { drag2_mc.startDrag(); };
drag3_mc.onPress = function() {   drag3_mc.startDrag(); };
drag4_mc.onPress = function() {   drag4_mc.startDrag(); };

drag1_mc.onRelease = function() { chequear("1", 390.6, 148.75); };
drag2_mc.onRelease = function() { chequear("2", 390.6, 231.05) ; };
drag3_mc.onRelease = function() { chequear("3", 390.6, 307.7) ; };
drag4_mc.onRelease = function() { chequear("4", 390.6, 307.7); };

for(var i:Number=1; i<5; i++)
{
   this["drag"+i+"_mc"].xo = this["drag"+i+"_mc"]._x;
   this["drag"+i+"_mc"].yo = this["drag"+i+"_mc"]._y;
   this["drag"+i+"_mc"].cual = 0;
}

this.drag1_mc.correcta = 1;
this.drag2_mc.correcta = 2,;
this.drag3_mc.correcta = 3;
this.drag4_mc.correcta = 4;


Ahora bien, lo que yo tengo que lograr es que "drag2_mc" y "drag3_mc" puedan ir a "destino2_mc" o "destino3_mc" indistintamente, ya que no importa el orden en el que las ubique.
Entonces mi problema es que no sé en qué parte del código o de qué manera se lo tengo que decir, probé distintas formas pero ninguna me funcionó.
Agradecería tanto que alguien me ayude!!. Yo estoy muy famliarizada con AS2 pero todavía tengo mucho por aprender y en algunos casos como éstos se me confunden todo.
Gracias!! espero alguna respuesta!

Por nalipetz

0 de clabLevel



 

firefox
Citar            
MensajeEscrito el 21 May 2012 12:10 pm
Me pierdo con mas de 10 líneas así que no mire mucho el código, pero busqué el texto dropTarget y no lo encontré ... considera usar dropTarget para saber adonde ha sido soltado un MovieClip, quizás sea mas simple que hitTest

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

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