Comunidad de diseño web y desarrollo en internet online

Ejecutar acción al colocar MC en un lugar específico

Citar            
MensajeEscrito el 04 Oct 2012 02:34 pm
Quisiera hacer una consulta:
Estoy tratando de hacer una balanza en la que en un lado hay un valor que aparece aleatoriamente y el otro lado está vació, lo que debo hacer es tomar objetos e ir colocandolos en el lado vacio a fin de lograr el peso que iguale el valor del otro lado.

Para esto tengo 5 movieclips cada uno con un valor respectivo,
ejem: mc10 que vale 10, mc20 que vale 20

lo que hago actualmente es que al pinchar cada uno de estos tomo su valor y lo sumo en una global a fin de poder compararlo, esto me funciona, pero lo que debo hacer es que sólo cuando deje los objetos en un lugar específico pase eso. Se entiende??? :?

Para mover los objeto ocupo:

Código ActionScript :

function Arrastrar(e:MouseEvent)
{
   e.target.startDrag();
}

function Soltar(e:MouseEvent)
{
   e.target.stopDrag();
   numerar(e); //esto debe llamarse sólo cuando los objetos son dejados en un específico lugar
}



Estás son las otras funciones que cree para ir dando valor numerico a cada MC y además ir comparándolo

Código ActionScript :

function numerar(e)
{
   var a:int = 0;
   var nombre:String = e.currentTarget.name;
   /*var nombre2:String = nombre.replace("bol","");
   var valor:int = int(nombre2.replace("_mc",""));*/
   var sub:String = nombre.substr(3,2);
   var valor:int = int(sub);

   //DESDE AQUI COMIENZO A ALMACENAR LA VARIABLE GLOBAL Y SUMARLA
   var sumaTotal:int = clases.MisGlobales.vars.sumaTotal;
   var sumaFinal:int;

   if (sumaTotal != 0)
   {
      sumaFinal = sumaTotal + valor;
      trace("Envío a Global: "+sumaTotal);
      trace("Suma Final: "+sumaFinal);
      clases.MisGlobales.vars.sumaTotal = sumaFinal;//INCREMENTO EL VALOR GLOBAL

      comparar();

   }
   else
   {
      clases.MisGlobales.vars.sumaTotal = valor;
      trace("Envío el primer valor:"+clases.MisGlobales.vars.sumaTotal);

      comparar();
   }
}


y finalmente comparo

Código ActionScript :

function comparar()
{
   var sumaTotal:int = clases.MisGlobales.vars.sumaTotal;
   var comparador:int = clases.MisGlobales.compara.comp;

   txtsuma.text = new String(sumaTotal);

   trace("Suma en memoria: "+ sumaTotal);
   trace("Comparador: "+ comparador);
   if (sumaTotal == comparador)
   {
      resultado.text = new String("CORRECTO!");
      //trace("CORRECTO");
   }
   else
   {
      resultado.text = new String("INCORRECTO!");
      //trace("INCORRECTO");
   }
}


no sé como hacer para ir metiendo estos MC en una especie de contenedor :? , debo crear otro MC??? si me pudiesen ayudar, he buscado en los ejemplos de acá y de internet, pero no he podido dar en el clavo con algo que se parezca.

Saludos y gracias. :)

pd: mi código puede q este sucio y tnga varios trace, pero soy nueva en esto y me gusta ir llevando el control de lo q hago.

Por danielillapp

35 de clabLevel



Genero:Femenino  

Aprendiz de la vida y AS3

chrome
Citar            
MensajeEscrito el 05 Oct 2012 02:12 am
Hola no se entiende mucho lo que pretendes. En primer lugar si quieres guardar una suma entre el peso que el usuario va a agregando en la balanza deberías usar hittestObject. El usuario podría hacer stopDrag() fuera de la balanza y provocar que se sumen los pesos cuando no se "pesaron"

Código ActionScript :

import flash.display.Sprite;
import flash.events.MouseEvent;

sq2.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown)

function mouseDown(event:MouseEvent):void {
sq2.startDrag();

}
sq2.addEventListener(MouseEvent.MOUSE_UP, mouseReleased);

function mouseReleased(event:MouseEvent):void {
sq2.stopDrag();
trace(sq2.hitTestObject(sq1));
//trace true or false if sq2 is on sq1
}


Luego si quieres crear un contenedor:

Código ActionScript :

var container: Sprite = new Sprite();

//MC es un MovieClip cualquiera
container.addChild(MC1);
container.addChild(MC2);
container.addChild(MC3);
addChild(container);


Saludos

Por viroguitar

10 de clabLevel



 

chrome
Citar            
MensajeEscrito el 08 Oct 2012 07:08 pm
Tal como dice viroguitar no se entiende muy bien a que queres llegar, al principio iba entendiendo tu problema pero despues me termine mareando. Si el tema es que solo se sumen cuando esten en un lugar especifico de la pantalla, despreocupate del "numerar(e)", pone eso dentro de una condicion, una opcion es la que dijo viroguitar y sino (aunque mas engorroso) lo podes hacer desde las cordenadas, ejemplo:

Código :


function Soltar(e:MouseEvent)
{
   e.target.stopDrag();

 // a lo que refiere viroguitar
 if (sq2.hitTestObject(sq1))
  numerar(e);

//a lo que me refiero yo con las coordenadas
  if ((e.target.x > 100) && (e.target.x <300))
    if ((e.target.y > 200) && (e.target.y < 300))
        numerar(e);
}


Lo del contenedor la verdad no entiendo a que queres llegar, asi que de momento no te puedo ayudar.

Por plancha

33 de clabLevel



 

chrome

 

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