Comunidad de diseño web y desarrollo en internet online

MovieClip sobre MovieClip y el evento CLICK

Citar            
MensajeEscrito el 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.

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

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

mouseEnabled = false;

LOL!!!!!!

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 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???

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 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 ActionScript :

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

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 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.

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 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 ActionScript :

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

Por isidoro

Claber

498 de clabLevel

2 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 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 ActionScript :

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 ActionScript :

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


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

U_U

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 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)

Por isidoro

Claber

498 de clabLevel

2 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 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.

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

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

Código ActionScript :

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.

Por isidoro

Claber

498 de clabLevel

2 tutoriales

Genero:Masculino  

firefox

 

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