Flash CS3 timeline: problema accediendo a contenidos de un frame.
Acabo de solucionar un problema con texto dinámico que me ha dado más de un día de quebraderos de cabeza en el trabajo.
El caso
Resulta que los contenidos de un frame en concreto (que no sea el 1) de la línea de tiempo (me refiero a cualquier instancia colocada en el escenario), NO están disponibles, o mejor dicho, NO existen nada más llegar al frame.
Por ejemplo:
- Crea una peli nueva
- Pon un movieClip en el frame 5 con nombre de instancia “prueba”
- Ahora vuelve al frame 1 y en panel de acciones escribe este código:
stop(); gotoAndStop(5); trace(prueba); // null
El resultado del trace nos da “null” !!!!!
Esto no pasaba en as2, y me fastidia que en algunos aspectos as3 va hacia atrás en lugar de mejorar las cosas (y eso que no puedo vivir sin él).
Solución
Para solucionar esto hay que programar un método que busque periódicamente el movieClip “prueba” hasta que ya esté disponible. ¿Cómo?, pues con un Timer por ejemplo:
stop(); gotoAndStop(5); trace(prueba); // null var timer:Timer = new Timer(10, 0); // se repite cada 10 milisegundos indefinidamente timer.addEventListener(TimerEvent.TIMER, AccessContent); timer.start(); function AccessContent(event:TimerEvent):void { if(prueba != null) { Timer(event.target).stop(); trace("ya tenemos acceso a prueba: ", prueba) } }
Yo personalmente preferiría no tener que hacer esto nunca, ya que me parece una guarrería, pero a veces, por como está montado el proyecto, (o cómo nos lo han dado), o vete a saber qué cosas, pues tenemos que hacer ñapas como estas.
De todas formas, no se si esto es “lógico” o es un bug.
Saludos
