Holas a todos.
Quizas esto le sirva a alguien.
Cuando se crea un boton sobre el escenario en flash, y modificamos sus estado over, up o down o hit, y dentro de alguno de esos estados metemos un textfield que queremos modificar dinamicamente.
En este caso especifico:
¿Como podemos acceder al textfield que por ejemplo se encuentra en el estado over del boton?
1. Consiguimos el displaycontainer del estado over.
2. Recorremos todos sus hijos con una función recursiva.
3. Validamos nombre de instacia de cada objeto hasta encontrar el del textfield que necesitamos.
4. Metemos el objeto encontrado dentro de un objeto para ser modificado despues.
Así sería el codigo.
Paso 1:
var displayContainer:DisplayObjectContainer = btn100.overState as DisplayObjectContainer;
Paso 2:
function recorrerFamiliaMovieClip(dc:DisplayObjectContainer):void{
for (var i:uint = 0; i < dc.numChildren; i++){
trace("hijotipo: " + dc.getChildAt(i));
trace("hijo: " + dc.getChildAt(i).name);
if(dc.getChildAt(i) is Shape){
trace('es shape');
}
else{
if(DisplayObjectContainer(dc.getChildAt(i)).numChildren > 0){
recorrerFamiliaMovieClip(DisplayObjectContainer(dc.getChildAt(i)));
}
}
}
}
Paso 3 y 4: Modificamos la funcion recursiva para validar el nombre de instancia del objeto que deseamos modificar:
recorrerFamiliaMovieClip(displayContainer);
var objetoBuscado;
function recorrerFamiliaMovieClip(dc:DisplayObjectContainer):void{
for (var i:uint = 0; i < dc.numChildren; i++){
trace("hijotipo: " + dc.getChildAt(i));
trace("hijo: " + dc.getChildAt(i).name);
if(dc.getChildAt(i).name == "texto"){
objetoBuscado = dc.getChildAt(i);
}
else if(dc.getChildAt(i) is DisplayObjectContainer){
if(DisplayObjectContainer(dc.getChildAt(i)).numChildren > 0){
recorrerFamiliaMovieClip(DisplayObjectContainer(dc.getChildAt(i)));
}
}
}
}
trace('objeto: ' + objetoBuscado);
var textFieldEncontrado:TextField = TextField(objetoBuscado);
textFieldEncontrado.text = "texto de prueba"
Como se puede observar: Se busca un objeto con nombre de instancia "texto" el cual es un texField, por eso al final las ultimas lineas obtengo el objeto lo convierto a este tipo de objeto (TextField) y modifico lo que quiera.
Espero esto le sirva a alguién... Saludos...
Cualquier pregunta con mucho gusto espero sus comentarios.
No hay comentarios:
Publicar un comentario