Comunidad de diseño web y desarrollo en internet online

Clip dentro de otro clip,se pierde el nombre...y propiedades

Citar            
MensajeEscrito el 18 Ene 2010 12:50 pm
hola buenas, llevo trabajando con as2 desde hace un par de años. y ahora queria invertigar sobre as3.

la cosa es que llevo unos dias, y mi sorpresa es cuando por jemplo tengo un movieclip llamado box1, donde le asigno unos listener, como over y out, y clik, y cada uno hace una funcion y todo perfecto. el problema viene cuando dentro de este moviclip creo otro clip, la cosa es que el clip "principal" pierde el nombre original y coge el del clip de adentro... y esto en as2 no era asi. alguien me puede explicar como funcionar ahora? o que manera hay para poder poner un clip dentro de otro y que no afecte al principal?

muchas gracias!

Por matog

3 de clabLevel



 

msie8
Citar            
MensajeEscrito el 19 Ene 2010 07:32 am
Matog, AS3 funciona igual que AS2. El problema con que nos encontramos es que AS3 siempre defines la función a nivel de frame (o a nivel de Clase), con lo que "this" siempre va a ser la película principal (si estamos escribiendo en la película principal, o el objeto de la Clase que sea). Supongo que de ahí tu confusión

Código ActionScript :

//en AS2
mimc.onEnterFrame=function(){
      trace(this)  //<--será "micm"
}

Código ActionScript :

//en AS3
mimc.addEventListener(Event.ENTER_FRAME,_onEnterFrame)
function _onEnterFrame(e:Event){
    trace(this) //<--es la película principal, 
                     //pensemos que podríamos escribir _onEnterFrame(); desde cualquier sitio
    //si queremos recoger "mimc" lo haremos mediante la propiedad "target" de "e"
    trace(e.target) //<---mimc
    //ó, con una conversión de cast
    var mc=e.target as MovieClip
    trace(mc) //<---mimc
}

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 19 Ene 2010 08:25 am
gracias por responder, pero creo que es otra cosa el problema, la cosa es que ya a un clip le he asignado todos los listeners o enter frame y funciona bien, me devuelve el target.name si se lo pido.

pero la cosa es que si dentro del clip donde he creado esos listener le meto otro clip, la cosa ya no funciona. aunq le asigne nombre de instancia , me dice que un elemento no tiene propieades y no esta definido (sin decirme cual), y ya nose que hacer.

Por matog

3 de clabLevel



 

msie8
Citar            
MensajeEscrito el 19 Ene 2010 08:37 am
si dentro de mimc, creo otro clip, al hacer un trace del nombre desde el enterframe, me coge el nombre del clip de adentro del mimc. es a eso a lo que me refiero. graciaaaaas =)

Por matog

3 de clabLevel



 

msie8
Citar            
MensajeEscrito el 19 Ene 2010 10:14 am
vale solucionado.

para coger el nombre del clip de principal, hay que utilizar el currentTarget!

saludos

Por matog

3 de clabLevel



 

msie8
Citar            
MensajeEscrito el 19 Ene 2010 10:26 am
Vale, entonces supongo que el problema viene sobre la diferencia entre target y currentTarget. (hay que tener cuidado con ellos cuando estamos con eventos del ratón.
"currentTarget" va a ser siempre el objeto al que le hemos añadido el evento, "target", será el que recibe el evento.
echalé un ejemplo al post de Esederre (es más claro con un ejemplo)
en este post de Cristalab traté de explicarlo -me temo que con poco fortuna-

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 19 Ene 2010 03:53 pm
exacto, me ha quedado a mi muy claro con este ejemplo que encontre por la red:

http://www.wastedpotential.com/?p=10

ahi se puede ver la diferenca de entre los dos en vivo.

espero que alguien tambien le sirva

muchas gracias eliseo!

Por matog

3 de clabLevel



 

msie8

 

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