¿Quieres registrarte?

MovieClip sobre MovieClip y el evento CLICK

Citar            
MensajePublicado: 05 Feb 2010 12:09 am
Hola, seguramente esta duda es Basica, pero igual no importa, no eh podido resolverlo.

Creas un boton y un movieclip colocas el movieclip sobre el boton. el movieclip no tiene ningun evento de click ni nada, pero el boton que esta por debajo, deja de funcionar, ya no se le puede hacer click ¿Como hago para que pueda usar el boton que esta por debajo sin modificar sus posiciones en la DisplayList y que ambos sigan en el escenario, vamos, sin cambiar la apariencia del diseño?

BG. Anteriormente en as2, hasta que no declarabas la funcion onRelease o algo, el movieclip en cuestión no podia recibir eventos del mouse y por lo tanto, todo lo que estaba debajo de el, era suceptible a eventos de mouse, al parecer eso ah cambiado.

LongeVie
Claber


clabLevel: 1650
Abajo de tu cama o en tu armario


1 Tip

firefox
      MP    
Citar            
MensajePublicado: 05 Feb 2010 12:19 am
Bueno, describir mi problema me ayudo a encontrar yo mismo la solución. LOL!!!!!!!!

mouseEnabled = false;

LOL!!!!!!

LongeVie
Claber


clabLevel: 1650
Abajo de tu cama o en tu armario


1 Tip

firefox
      MP    
Citar            
MensajePublicado: 05 Feb 2010 08:35 pm
Ahora si va una pregunta relacionada con la anterior.

Tengo como muchas cosas en el escenario y tengo unos botones, pero de repente hay muchos clips que pasan por ahi y hacen cosas y tienen secciones transparentes, cuando estos clips se posicionan sobre mis botones, mis botones dejan de funcionar y me resulta engorroso estar desactivandoles su propiedad mouseEnabled de todos e incluso eso algunas veces no funciona para algunos.

hay alguna manera de hacer que los clips que no tengan nada en su eventDispatcher simplemente no puedan recibir eventos del mouse y se traten como si no estuvieran visibles sin ir uno por uno, colocando nombres de instancia y fijando mouseEnabled a false???

LongeVie
Claber


clabLevel: 1650
Abajo de tu cama o en tu armario


1 Tip

firefox
      MP    
Citar            
MensajePublicado: 08 Feb 2010 07:24 am
Lo "suyo" es que tus "botones" tengan la mayor "depth". Si estamos hablando de "tiempo de diseño" es poner los botones en la capa de más arraiba. En este sentido, cuando añadimos los elementos por programación, a veces es útil tener un "MC" contenedor en la capa más baja e ir añadiendo dichos MCs en el "contenedor" en lugar de en el stage directamente.
Si es por programación, deberíamos tratar de hacer el "addChild" de los botones los últimos.
Por último se me ocurre que siempre nos podemos recorrer TODOS los MCs del stage en un bucle y ponerles su propiedad mosuseEnebaled a false

Código :

for each (mc:MovieClip in stage){
         mc.mouseEnabled=false
}

NOTA:en lugar de addChild, se puede usar addChildAt(mimc,0) //<--lo añadirá en el fondo

Eliseo2


clabLevel: 530



firefox
      MP    
Citar            
MensajePublicado: 08 Feb 2010 04:41 pm
Gracias por contestar Eliseo2 :) pero mi situacion es otra.

Tengo todos los elementos directamente en layers del escenario y sus lineas de tiempo dentro de movieclips, muy estilo as2, pero resulta que estos objetos, especialmente uno que es un destello, van desde un punto incial a un punto final y en su camino pasan sobre el menu, luego el destellos del que hablo cubre todo el stage, no puedo cambiar las depths porque eso cambiaria el diseño.

Mis botones quedan desactivados y lo unico que se me ocurre es en el evento ENTER_FRAME testee la posicion del mouse, pero, hacer eso para todos se me hace un desperdicio del evento ROLL_OVER.

Lo del foreach ya lo intente y no me ah funcionado u_u funciona en un clip, pero no en todos.

LongeVie
Claber


clabLevel: 1650
Abajo de tu cama o en tu armario


1 Tip

firefox
      MP    
Citar            
MensajePublicado: 08 Feb 2010 08:05 pm
Hola,
pues la verdad es que es extraño, porque en teoría "mouseEnabled = false" debería hacer que tu botón capturase el evento de ratón, aun cuando el MC del destello pase por encima de él. En esta prueba que he hecho, el Clip mcDestello está encima del botón button, y funciona:

Código :

mcDestello.mouseEnabled = false;
button.addEventListener(MouseEvent.CLICK, clickHandler);
function clickHandler(event:MouseEvent):void
{
   trace("pulsado");
}

isidoro


clabLevel: 301 Genero:Masculino


2 Tips

firefox
      MP    
Citar            
MensajePublicado: 09 Feb 2010 12:04 am
Resolvi el problema a medias.

Dentro de cada movieclip existian otros moviclips, entonces aplique otra de sus propiedades mouseChildren, setear las dos en false hace que ahora si se desactive.

Código :

a1.mouseEnabled = false;
a1.mouseChildren = false;


Ahora el problema mayor es que son muchos y tengo que hacerle eso a todos???

por cierto, el for each o for in, no funcionan con "this":

Código :

for each ( var mc:* in this )
{ 
       trace(mc) 
} 


No se ejecuta U_U al parecer, no saben como puedo corregir eso?

U_U

LongeVie
Claber


clabLevel: 1650
Abajo de tu cama o en tu armario


1 Tip

firefox
      MP    
Citar            
MensajePublicado: 09 Feb 2010 07:34 am
¿No sería más fácil meter todos esos clips del efecto en otro que los contenga y hacer mouseChildren sobre el contenedor?
PD: la sintaxis del "for in" no lleva each, y el tipo del iterador es String: for (var mc:String in this)

isidoro


clabLevel: 301 Genero:Masculino


2 Tips

firefox
      MP    
Citar            
MensajePublicado: 09 Feb 2010 04:23 pm
No, ni el for each ni el for in funcionan con this, cuando this esta escrito sobre la linea de tiempo de algún movieclip.

Y en realidad meter todos esos movieclips en un contenedor, seria lo mas dificil, es mas facil escribir ese codigo en cada movieclip. No es que no quiera, lo que pasa es que trabajo en conjunto con diseñadores, por mi todo lo animaria con codigo, pero no soy diseñador.

RESULETO: imposible, olvidate de as2.

LongeVie
Claber


clabLevel: 1650
Abajo de tu cama o en tu armario


1 Tip

firefox
      MP    
Citar            
MensajePublicado: 09 Feb 2010 05:36 pm
Pues hombre, la solución para bucle for podría ser algo así:

Código :

for (var i:int; i < this.numChildren; i++)
{
   trace(this.getChildAt(i));
}

Pero lo de hacer entender a tus diseñadores lo útil que es usar containers en estos casos creo que lo tienes más complicado xD
Suerte.

isidoro


clabLevel: 301 Genero:Masculino


2 Tips

firefox
      MP    

   Página 1 de 1

Responder al tema
Respuesta Rapida


 

 

Cristalab BabyBlue + BloodBerry © 2007 Cristalab
Powered by phpBB © 2001, 2007 phpBB Group

3 6 7 8 10 11 12 14 15 17 18 28 34 38 40 42 44 45 46 47 48