Comunidad de diseño web y desarrollo en internet online

Acceder a capas internas con AS3

Citar            
MensajeEscrito el 02 Feb 2010 02:02 pm
Hola

Tengo una escena, con un capa, dentro de la capa hay otra capa y al final hay un componente TextField, desde el archivo as no puede acceder, porque no me reconoce el componente.

Os lo explico con imagenes.

Esta es la escena principal y sus capas.



luego edito la capa señalada y entro en tarjeta2 y aparece las capas que aparecen a continución:



luego voy a la capa señalada, y en el último fotograma, edito y entro en esta nueva zona:



y aquí en el último frame, quiero poner un TextField, cuyo nombre puede ser textFieldprueba.

Pues bien, en el archivo de la clase princial, as, pues a llamar al textFieldprueba, me dice que no existe. En cambio si lo pongo en la primera escena, pues si lo localiza, pero claro, necesito que este dónde esta ahora.

Por Dav1d

14 de clabLevel



 

firefox
Citar            
MensajeEscrito el 02 Feb 2010 02:41 pm
En teoría:

this.getChildByName("nombreDeInstanciaDeTarjeta2").getChildByName("nombreDeInstanciaDePass").textFieldprueba.

Si te da error, haz los casts a movieClip de los getChilds

Por ur!

256 de clabLevel



 

Barcelona

chrome
Citar            
MensajeEscrito el 02 Feb 2010 04:29 pm
Ur! (y Dav1d), NO se puede acceder a un "MC" que no esté en el mismo instante en que se ejecuta la orden. Por tanto no lo puedes hacer
Opciones
1.-Crear una variable en la película principal que sea el valor que le queremos poner a nuestro TextField y, en el frame donde lo tenemos escribir algo como

Código ActionScript :

miTextField.text=MovieClip(parent.parent).mivariable

Uso parent.parent porque el Textfield está en un MC que a su vez está en otro MC que se encuentra en la película principal
2.-crear un evento personalizado que se dispare cuando entra en el frame
Vamos, en el frame donde esté el TextField podemos escribir

Código ActionScript :

dispatchEvent(new Event("EN_FRAME_OK"))

Si, en la película principal añadimos el evento, sabremos cuando cambiarle el valor a nuestra caja de texto

Código ActionScript :

addEventListener("EN_FRAME_OK",ponerTexto)
function ponerTexto(e:Event){
     trace(e.target)  //<--debería salir el nombre de instancia de nuestra caja de texto
     var texto:TextField=e.target as TextField  //<--una conversión de cast
                          //es necesario para que el "compilador" sepa que e.target es de tipo Textfield
     texto.Text="Hola Mundo"
}

Por Eliseo2

710 de clabLevel



 

firefox

 

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