Comunidad de diseño web y desarrollo en internet online

Como quitar elemento de una array al arrastrarlo

Citar            
MensajeEscrito el 15 Ago 2011 06:28 pm
Hola amigos he regresado con una duda que me tiene atorado resulta que tengo un array con varios mc de mi biblioteca y al arrastrarlos quiero que me los quite del array entonces es ahi el problema como quitar los mc del array que llamo de la biblioteca y tambien como puedo hacer que al arrastrar el mc y soltarlo quede insertado en su objetivo, les anexo parte de mi codigo que llevo

Código :

var mcArray:Array =  ["ajuchitlan","arcelia","zirandaro"];
botoncito.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);

function mouseDownHandler(event:MouseEvent):void
{
   var Clip:MovieClip;
   
   var aleatorio:String = mcArray[Math.round(Math.random() * mcArray.length)];
   
   var cant:Number = Contenedor.numChildren;
   
   if (aleatorio == "ajuchitlan")
   {
      Clip = new ajuchitlan();
   }
               else if (aleatorio == "arcelia")
   {
      Clip = new arcelia();
   }
               else 
   {
      Clip = new zirandaro();
   }
for(var i:int = 0; i<cant; i++) Contenedor.removeChildAt(0)
   Contenedor.addChild(Clip);
   
   Clip.addEventListener(MouseEvent.MOUSE_UP,soltar);
   Clip.addEventListener(MouseEvent.MOUSE_DOWN,arrastrar);
}

function soltar(eve:MouseEvent):void
{
   eve.target.stopDrag();
}

function arrastrar(eve:MouseEvent):void
{
   eve.target.startDrag();
}


Acabe de mencionar que estoy usando actionscript 3.0 y estoy desarrollando un juego educativo de los municipios del estado de Guerrero de México y es muy importante que me ayuden y de gracias.

Por richard31

4 de clabLevel



 

msie
Citar            
MensajeEscrito el 16 Ago 2011 02:29 am
Prueba

var aleatorio:String = mcArraysplice(Math.round(Math.random() * mcArray.length), 1);

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 17 Ago 2011 02:44 pm
Ok amigo gracias amigo solisarg me sirvio mucho el codigo que me proporcionaste ahora estoy viendo la manera de arrastrarlo a un punto especifico y que quede insertado y no se mueva al caer en dicho punto, ya lo intente con el codigo drag y drog pero al poner al poner el mc donde quedar insertado me manda un mensaje de error que dice que el tipo de hitTestObject hace mencion a objeto estatico, mi pregunta es como podria hacerlo o hay otra manera de hacerlo.

Por richard31

4 de clabLevel



 

msie
Citar            
MensajeEscrito el 17 Ago 2011 02:56 pm
Yo solo veo un stopDrag, no veo ning{un hitTestObject

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 17 Ago 2011 03:33 pm
Ok mira te pongo mi codigo que tengo, en el cual pongo HitTestObject.

Código :

function soltar(eve:MouseEvent):void 
{
   if(cuadrado.hitTestObject(cuadrado_mc)==true)
   {
      ajuchitlan_mc.x;
      ajuchitlan_mc.y;
   } 
   eve.target.stopDrag();
   
} 
function arrastrar(eve:MouseEvent):void 
{
   eve.target.startDrag();
}


Y me aparece el error diciendo "hitTestObject posiblemente no definido mediante una referencia con tipo estático Class."

Por richard31

4 de clabLevel



 

msie
Citar            
MensajeEscrito el 17 Ago 2011 03:39 pm
El if está mal, debería ser

if(cuadrado.hitTestObject(cuadrado_mc))

Luego si cuadrado extiende de MovieClip , hazle un cast

if(MovieClip(cuadrado).hitTestObject(cuadrado_mc))

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 17 Ago 2011 04:10 pm
Ok, amigo el if que pusiste primero me marca el mismo error, y el cast me manda el error siguiente, " conversión forzada: no se puede convertir cuadrado$ en flash.display.MovieClip."

Por richard31

4 de clabLevel



 

msie
Citar            
MensajeEscrito el 17 Ago 2011 06:31 pm
Luego si cuadrado extiende de MovieClip


¿cuadrado extiende de MovieClip?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 17 Ago 2011 08:08 pm
Que me quisiste decir???

Por stynpy

47 de clabLevel



 

safari
Citar            
MensajeEscrito el 17 Ago 2011 08:16 pm
¿Tu sabes que las clases en Flash suelen ectender de otras? ¿cuadrado no es una clase? Porque hitTestObject es un método que aplica a los objetos de determinadas clases que descienden de la clase base DisplayObject

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 17 Ago 2011 09:53 pm
Ok amigo entonces cual seria la solucion o el camino a seguir, o que debo de hacer para conseguir el resultado que estoy buscando?

Por richard31

4 de clabLevel



 

msie
Citar            
MensajeEscrito el 17 Ago 2011 10:55 pm
Contarme que es cuadrado

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 17 Ago 2011 11:19 pm
No, cuadrado es un movieclip que esta en mi biblioteca, y tengo otra movieclip en el escenario ya insertado en el cual quiero que ahi se quede insertado al momento de arrastrarlo.

Por stynpy

47 de clabLevel



 

safari
Citar            
MensajeEscrito el 17 Ago 2011 11:28 pm
El error debe venir de acá:

cuadrado.hitTestObject

Dices que cuadrado es un MovieClip, con lo cual no debería dar ese error. Vamos a comporbarlo haciendo un cast

MovieClip(cuadrado).hitTestObject

Si cuadrado no es MovieClip, te sale ahora un error que dice que no puede convertir xxx en flash.displayMovieClip, pero si no sale eso pero sigue dando el error, quizás no sea este hitTestObject el que lo esté generando ... ¿hay por ahí otro hitTestObject?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 17 Ago 2011 11:36 pm
No tengo otro HitTestobject, hice un casta y me dice que faltan parentesis, mira me mando un mensaje en la zona de salida

Código :

Error de conversión forzada: no se puede convertir cuadrado$ en flash.display.MovieClip.
   at ALE_fla::MainTimeline/soltar()

y tambien un error

Código :

 Se utilizó el valor de la función donde se esperaba el tipo Boolean.  Posiblemente faltan los paréntesis () detrás de esta referencia de función.


Le puse parentisis al final y nada te anexo en donde estoy poniendo mi codigo

Código :

function soltar(eve:MouseEvent):void 
{
   if (MovieClip(cuadrado).hitTestObject)
   {

   
   } 
   eve.target.stopDrag();
   
} 

De antemano muchas gracias por seguir contestando.

Por stynpy

47 de clabLevel



 

safari
Citar            
MensajeEscrito el 18 Ago 2011 01:46 pm
no se puede convertir cuadrado$ en flash.display.MovieClip


Ok, cuadrado no es un MovieClip ... ¿que es cuadrado?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 18 Ago 2011 02:27 pm
Es un clip de pelicula que tengo en la biblioteca junto con otros dos mas clip de pelicula

Por stynpy

47 de clabLevel



 

safari
Citar            
MensajeEscrito el 18 Ago 2011 03:21 pm
Ostras, chaval, que sentido tiene este código:

if (MovieClip(cuadrado).hitTestObject)

?????????????????????

¿No le falta algo? ¿hitTestObject contra que? Media pila, sino el juego nos va a llegar 3000 POST

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 18 Ago 2011 03:49 pm
Ok amigo, mira si pongo este codigo

Código :

function soltar(eve:MouseEvent):void 
{
   if (MovieClip(cuadrado).hitTestObject)
   {
    cuadrado_mc;
       
   } 
   eve.target.stopDrag();
   
} 

Me manda error que no se puede convertir cuadrado$ en flash.display.MovieClip.
at ALE_fla::MainTimeline/soltar(), y de igual forma si lo pongo asi

Código :

function soltar(eve:MouseEvent):void 
{
   if (MovieClip(cuadrado).hitTestObject(cuadrado_mc))
   {
    
       
   } 
   eve.target.stopDrag();
   
} 

Por stynpy

47 de clabLevel



 

safari
Citar            
MensajeEscrito el 18 Ago 2011 03:53 pm
Por favor alguien podria ayudarme con esto?? tambien tiene que ver con un Array, tengo todo mi codigo bien pero hay algo que no me esta funcionando cuando hago el mouse OVER y el mouse OUT que cuando paso con el mouse me da un error y es que no esta entrando al ARRAY de los botones.

Mucho les agradeceria si me pueden ayudar!

var links = ["http://www.aqui coloco los links"];

public function Botonera()
{
var botHome:MovieClip = new botDHome();
var botNosotros:MovieClip = new botDNosotros();
var botProdserv:MovieClip = new botDProdserv();
var botSeguridad:MovieClip = new botDSeguridad();
var botContacto:MovieClip = new botDContacto();

//var botFondo:MovieClip = new movEmpty();

var fondos = [botHome, botNosotros, botProdserv, botSeguridad, botContacto];

var etiquetas = ["Home", "Nosotros", "Productos y Servicios", "Seguridad", "Contacto" ];

var nX = 193;
var nY = 4;

for ( var i = 0; i < etiquetas.length; i++) {
var miBoton:MovieClip = new Boton();
addChild( miBoton );
miBoton.txtEtiqueta.autoSize = "left";
miBoton.txtEtiqueta.text = etiquetas[i];
//fondos[i].alpha = 0;
miBoton.addChildAt(fondos[i], 0);
miBoton.txtEtiqueta.x = ( (fondos[i]).width - miBoton.txtEtiqueta.width ) / 2;
miBoton.txtEtiqueta.y = ( (fondos[i]).height - miBoton.txtEtiqueta.height ) / 2;
miBoton.alpha = 0;
miBoton.enlace = links[i];
miBoton.buttonMode = true;
miBoton.mouseChildren = false;
miBoton.x = nX;
miBoton.y = nY;
nX += miBoton.width + 2;

TweenMax.to( miBoton, 0.5, { alpha: 1, delay: i * 0.4 } );

miBoton.addEventListener( MouseEvent.ROLL_OVER, button_over );
miBoton.addEventListener( MouseEvent.ROLL_OUT, button_out );
miBoton.addEventListener( MouseEvent.CLICK, button_click );
}

}

function button_over(evento) {
TweenMax.to(evento.target.miBoton, 0.5, { alpha: 1, ease: Strong.easeInOut } );
}

function button_out(evento) {
TweenMax.to(evento.target.miBoton, 0.8, { alpha: 0, ease: Strong.easeInOut } );
}

function button_click(e:MouseEvent):void {
var request:URLRequest = new URLRequest(e.target.enlace);
try {
navigateToURL(request, '_self');
} catch (e:Error) {
trace("Error occurred!");
}

}

}

}

Por O5kr

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 18 Ago 2011 04:08 pm
O5kr> abre un POST nuevo con tu tema

stynpy> ¿Entiendes lo que estás haciendo o copypasteas viendo que no de error? Si no entendemos lo que hacemos no avanzamos !!!
Entonces cuadrado y cuadrado_mc son dos MovieClips que tienes en tu librería, ¿verdad?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 18 Ago 2011 04:13 pm
Asi es amigo

Por stynpy

47 de clabLevel



 

safari
Citar            
MensajeEscrito el 18 Ago 2011 04:20 pm
Ok, entonces vamos a hacer un proof de concept, porque ese error no debería dar.
En una peli nueva arrastra ambos MC de la librería de tu peli a la peli nueva, dale nombres de instancia cuadrado y cuadrado_mc, así en tu escenario solo están ambos clips, y en el primer y únifo frame de tu línea de tiempo pones

Código ActionScript :

if (MovieClip(cuadrado).hitTestObject(cuadrado_mc))
   {
      trace("se tocan") 
   } else trace("no se tocan")


Al publicar, si no está uno arriba de otro debería trazar se tocan, sino no se tocan. No debería dar error (de echo el cast es innnecesario)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 18 Ago 2011 09:38 pm
No amigo me sale un error diciendome no se puede convertir cuadrado$ en flash.display.MovieClip.at ALE_fla::MainTimeline/soltar(), amigo a que se debera este error o hay otra forma de hacerlo, mira mi idea es casi hacerlo como el juego del clasico del solitario que tu le dabas clic a la carta y salia otra diferente y si querias arrastrabas y al ver que era de su lugar se quedaba ahi y si no se regresaba, crees que sea muy dificil o habra otra manera de hacer.

Por stynpy

47 de clabLevel



 

safari
Citar            
MensajeEscrito el 19 Ago 2011 01:22 am
Si no puedes hacer el ejercicio anterior, dudo que puedas hacer nio siquiera el comienzo de un solitario, lo digo posta, esto no es magia.
Crea dos MovieClips desde cero y haz andar el hitTestObject del ejemplo anterior, superpuestos y sin superponer. Las cosas se hacen ... haciéndolas, no hay otra forma

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 03 Sep 2011 10:17 pm
:lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol:
Hay que ver que paciencia tienes Jorge. No me había reido tanto en la vida. Pero me he quedado con la duda ¿que serían cuadrado y cuadrado_mc?

Por Cagarnera

Claber

158 de clabLevel



 

firefox

 

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