Cuando cargamos una pelicula externa dentro de una pelicula principal, la velocidad de fotogramas de la pelicula cargada se adapta a la velocidad de la pelicula principal, y esto nos dará problemas de sincronización si estamos importando pelicuals a diferentes velocidades.
Supongamos que tenemos esta animación:
Esta animación tiene una velocidad de 12 fotogramas por segundo y una duración de 200 fotogramas.
Esta misma animación la podríamos haber conseguido a 24 fotogramas por segundo y 400 fotogramas de duración.
Si visualizamos estas dos animaciones por separado parecen tener la misma velocidad.
El problema nos vendrá si queremos colocar estas dos animaciones dentro de una misma pelicula. Por ejemplo, colocamos estas dos peliculas dentro de una pelicula a 24 fotogramas por segundo.
La pelicula de 12 fotogramas por segundo pasa a tener la velocidad de 24 fotogramas por segundo de la pelicula principal, pero mantiene su duracion que es de 200 fotogramas, con lo que parece tener el doble de velocidad...
Esto lo podemos solucionar con una clase que permita modificar la velocidad de fotogramas de un MovieClip concreto:
Este código lo copiaremos y pegaremos dentro de un archivo de código y lo llamaremos "FrameRate.as" (respetando las mayúsculas)
Y cambiaremos el FrameRate del clip que contiene la animación de 12 fotogramas por segundo de la siguiente manera:
Código :
var carga:MovieClipLoader = new MovieClipLoader(); carga.loadClip("ani1.swf", contenedor1); carga.loadClip("ani2.swf", contenedor2); ani1 = new FrameRate(contenedor1, 12);
El resultado es que la animación mantiene la velocidad de fotogramas original.
Grfx, te volviste a adelantar Por cierto, está bien sistematizarlo en una clase, pero ya que sólo tiene una función, yo la pondría en un archivo .as, que se refiera a MovieClip.prototype y que se acceda a ella con un #include
igualmente, este es un asunto muy consultado en los foros, sera de mucha ayuda Por:Mariux
mmm... si es verdad que se descuadra un poco... pero bueno es un descuadre minimo comparado con el descuadre inicial. Posiblemente Zah tenga razón y sea por el redondeo.
PD. lo del include# es una opción, pero yo prefiero trabajar con clases... Por:Zguillez
quizas ese pequeño desface se podria solucionar si se aplica la logica de Drop Frame. claro que eso es mas instantaneo, en todo caso este dato es de gran ayuda. Por:supermac_blog
OMFG!!!! por fin, y todo encapsuladito... que MONO, es genial
Gracias Zguillez, has aportado luz a uno de los secretos más oscuros que teniamos con los multiswfs Por:MorphX_blog
Como preguntan mucho por esto en el foro, dejo el código para hacer que vaya hacia atrás:
Ahora, me estoy dando cuenta de que así se carga uno los play, stop, gotos y demás. Habría que hacer una clase que extienda a MovieClip, con métodos como _stop o algo así. Maikel me ensñó cómo aquí Por:Zah
Lo primero mencionado, solo funciona con loadClip no? Porque yo lo hago con un loadMovie y no me funciona... Por:t3rzer_blog
Donde he de colocar la 2 parte del codigo que dice cambiar el framrate del clip de 12 fotogramas ?
var carga:MovieClipLoader = new MovieClipLoader(); carga.loadClip("ani1.swf", contenedor1); carga.loadClip("ani2.swf", contenedor2); ani1 = new FrameRate(contenedor1, 12); Por:JkoRn