Me preguntó antes con un problema similar y recibió una gran respuesta, así que me disculpo si esto es un poco frustrante. Espero que sea uno rápido. Estoy diseñando un Flash interactivo tutorial en un esfuerzo para explicar un complejo problema biológico, y he estructurado de la línea de tiempo de manera que no hay más de dos marcos y cuatro capas. He diseñado esta antes en el Escenario de línea de tiempo, pero se hizo tan desordenado, y con un par de problemas, que decidí que tenía que volver a hacer de esta manera.

Consta de tres partes principales – Un título que se desvanece en primer lugar en dos segmentos, seguido por dos botones (que son los discapacitados, hasta que totalmente fade in) y, finalmente, las animaciones de las moléculas que aparecen y desaparecen de forma indefinida en un bucle. La página, a continuación, permanece ambiente hasta que un usuario hace clic en uno de los botones.

Tengo cuatro capas en la línea de tiempo principal – Acciones, los Botones, las Moléculas y los Títulos. En cada una de ellas son las correspondientes imágenes y animaciones.

Quiero el código para que cada uno desempeña sucesivamente después de la otra, pero me lo estoy pasando muy difícil acceder a otras líneas de tiempo a través de AS3.

Actualmente tengo esto en la capa Acciones:

import flash.events.Event;

NRPSText_mc.addEventListener(Event.ENTER_FRAME, FadeIn);

function FadeIn(event:Event):void
{
    if (MovieClip(this.root).currentFrame > 0) {
        NRPSText_mc.gotoAndPlay("NRPSFadeIn")
    }
}

ColourButton_mc.addEventListener(Event.ENTER_FRAME, BtnFadeIn);

function BtnFadeIn(event:Event):void
{
    if (NRPSText_mc.currentFrame == 30) {
        ColourButton_mc.gotoAndPlay("ButtonPress")
    }
}

Debe estar claro de esto que he etiquetado de determinados eventos en cada línea de tiempo, y yo quiero jugar como uno de los acabados.

El problema es saber qué poner antes «.currentFrame» en cada instancia, y no puedo encontrar en cualquier lugar! Hasta ahora he sido capaz de obtener mediante el uso de «este» y «MovieClip(este.de la raíz)», pero tengo que ser capaz de averiguar cómo las referencias de estos incrustados los plazos para hacer el trabajo. Yo he probado estos códigos con la «trazabilidad» y parece que funciona bien, así que yo supongo que aquí es donde reside el problema.

InformationsquelleAutor PPartisan | 2012-02-20

1 Comentario

  1. 3

    Primero de todos, si dispone de código en la línea de tiempo principal en lugar de MovieClip(this.root).currentFrame puedes usar currentFrame ya que se refiere al objeto de establecer la secuencia de comandos en.

    Segundo, este

    if (MovieClip(this.root).currentFrame > 0) {
        NRPSText_mc.gotoAndPlay("NRPSFadeIn")
    }

    se acaba de hacer NRPSText_mc estancia en el «NRPSFadeIn» etiqueta que se llama cada fotograma.

    Tercero, si usted tiene un clip de película en el escenario y ha establecido su nombre de instancia puede hacer referencia a su línea de tiempo DE ámbito primario (línea de tiempo principal) por que el nombre de instancia como lo hace con NRPSText_mc.gotoAndPlay("NRPSFadeIn"). Si tienes un script DENTRO de ese movieclip solo uso gotoAndPlay() y currentFrame porque están en el mismo objeto como una secuencia de comandos.

    También lo están haciendo un poco mal. Enfoque común es el uso de la línea de tiempo de animación o algún tipo de interpolación de la biblioteca como TweenMax. Como usted está usando el IDE de Flash, el modo correcto de hacer lo mismo, sería la siguiente: crear distintos componentes movieclip con lo de la animación de los objetos que usted desea; colocarlos en la línea de tiempo principal que tiene su propia animación que implican estos clips; en cualquier fotograma que desee para el control de su interior clips conjunto de guiones independientes con stop(), gotoAndPlay(), etc.

    Si quieres ser notificado cuando un clip terminado de jugar usar AS3 eventos. Por ejemplo tienes un movieclip llamado mc, agregar una secuencia de comandos para el último fotograma dispatchEvent(new Event("stopped!")); stop(); y en la línea de tiempo principal

    mc.addEventListener("stopped!", listener);
    function listener(event:Event):void {
      trace("mc stopped!");
    }

    De esta manera es mucho más fácil que la comprobación de los números de fotograma cada evento enterframe.

Dejar respuesta

Please enter your comment!
Please enter your name here