Foros del Web » Creando para Internet » Flash y Actionscript »

Problemas de sincro...

Estas en el tema de Problemas de sincro... en el foro de Flash y Actionscript en Foros del Web. Hola y gracias por leer. Me encuentro realizando una intro que posee un track musical que deberia mantener un sincro con el texto e imagenes ...
  #1 (permalink)  
Antiguo 21/11/2006, 09:06
 
Fecha de Ingreso: junio-2005
Mensajes: 66
Antigüedad: 12 años, 6 meses
Puntos: 0
Problemas de sincro...

Hola y gracias por leer.
Me encuentro realizando una intro que posee un track musical que deberia mantener un sincro con el texto e imagenes que se suceden.
Mi problema de siempre radica en que al realizar el proyecto, de acuerdo a los fps que yo setee calculo el tiempo para hacer las entradas en determinado frame. Ahora cuando pruebo la pelicula en la reproduccion esto no es asi. Lo peor es que cuando subo el swf y lo reproduzco on line, el resultado, de acuerdo a la pc que lo pruebe es distinto. A veces termina antes el track musical y a veces termina antes lo visual quedando a medio tiempo la musica y ya pasando al home del sitio. Esto me hace pensar que es de acuerdo por ejemplo a la resolucion de pantalla que se use? Por ejemplo en mi pese tengo 1280x1024 y el resultado es bastante pobre, terminando mucho antes el track musical y se sigue reproduciendo la pelicula hasta que termina y al final pasa al home. En pcs que usan 800x600 por el contrario el resultado es inverso.
En fin, yo creia que una vez que esta cargada la pelicula se reproducira de igual manera manteniendo la sincro cuando fuese necesaria. Pero en mi caso no es asi.
Hay alguna manera certera para corregir este problema.
Muchas gracias!
El site para chequear el problema es www.espiritunomade.com
__________________
Bon Jovi Argentina
  #2 (permalink)  
Antiguo 21/11/2006, 10:55
 
Fecha de Ingreso: agosto-2006
Mensajes: 159
Antigüedad: 11 años, 4 meses
Puntos: 4
Hola:

Por lo que pude apreciar me da que utilizas Flash en la linea de tiempo principal.

Personalmente a mi no me gusta por que es dificil en muchos casos optener resultados buenos.

Yo te recomendaria utilizar mas ActionScript y menos linea de tiempo.

Reproducir el sonido por separado, y cargar images en funcion del tiempo trascurrido, haran que que la sincronizacion sea garantizada.

Si quieres ser mas especifico creo que te puedo ayudar.
  #3 (permalink)  
Antiguo 21/11/2006, 11:01
 
Fecha de Ingreso: junio-2005
Mensajes: 66
Antigüedad: 12 años, 6 meses
Puntos: 0
Especificando...

Estas en lo cierto. Por ahora me manejo con la interface de flash y lo que hago en action script son mas bien lineas para la navegacion ya que estoy haciendo mis primeras armas con AS viendo videotutoriales que eh comprado.
En la timeline tengo una capa para el sonido y otra en la cual tengo el clip de pelicula de toda la animacion con imagen, texto y sus respectivos movimientos, filtros y demas.
Si mal no entendi, vos me querias decir que a partir de lo hecho puedo mediante el action script manipular el clip de pelicula de acuerdo a los tiempos del track de sonido, o debo arrancar de cero con el action script?
Muchas gracias!
__________________
Bon Jovi Argentina
  #4 (permalink)  
Antiguo 22/11/2006, 09:01
 
Fecha de Ingreso: agosto-2006
Mensajes: 159
Antigüedad: 11 años, 4 meses
Puntos: 4
Hola:

Supongamos que tienes 4 fotografias a mostrar en diferentes lugares de la pantalla, y que cada una debe aparecer y desaparecer transcurrido cierto tiempo, tiempo determinado por la duracion de la cancion.

Hay varias formas de crear este tipo de efectos, pero creo que la que te voy a explicar es la mas sencilla, ya que combina un poco de ActionScript y un poco de linea de tiempo. Te lo voy a explicar desde un documento en blanco, y luego tu lo trasladas a lo que tienes.

Lo primero es convertir las fotografias a MovieClips(MC en adelante). Estos MC los colocas por la pantalla a tu gusto, no importa que se superpongan. Ahora en el panel de propiedades a cada uno de los MC les pones de nombre de instancia foto1, foto2, foto3 y foto4. Ademas en la pestaña que pone "Color:" a cada uno, tambien le aplicas un Alpha a 0.

Ahora vamos a cargar un sonido. Lo voy ha hacer desde la biblioteca, asi que lo primero es importarlo a la misma. Si no conoces este proceso dimelo y te lo explico.

Para manejar sonidos desde la biblioteca mediante ActionScript(AS en adelante), hay que ponerle un nombre de vinculacion.

Selecciona el sonido con el boton derecho y pulsa en "Vinculacion..."

Con las opciones "exportar para AS" y "exportar en el primer fotograma" seleccionadas, ponemos un nombre de vinculacion, por ejemplo "sonido".

Con este nombre nos vamos a manejar con AS.

Ahora queda la parte de programacion.

Lo primero es crear un objeto Sound y relacionarlo con nuestro sonido:

Código:
var track:Sound = new Sound();
track.attachSound("sonido");
Ahora creamos unos comportamientos especificos para los MC:

Código:
MovieClip.prototype.alfaMas = function(num:Number):Void  {
	this.onEnterFrame = function():Void  {
		this._alpha += num;
		if (this._alpha>=100) {
			this._alpha = 100;
			delete this.onEnterFrame;
		}
	};
};
MovieClip.prototype.alfaMenos = function(num:Number):Void  {
	this.onEnterFrame = function():Void  {
		this._alpha -= num;
		if (this._alpha<=0) {
			this._alpha = 0;
			delete this.onEnterFrame;
		}
	};
};
Seran los encargados de poner o quitar el "_alpha" de los MC.

Ahora creamos unas variables para un manejo mas comodo de la programacion:

Código:
var duracion:Number = track.duration;
var posicion1:Number = Math.floor(duracion/4);
var posicion2:Number = posicion1*2;
var posicion3:Number = posicion1*3;
var posicion4:Number = posicion1*4;
A continuacion decimos que el sonido arranque desde el segundo 0 y que se repita una sola vez. Ademas le asignamos una cantidad de volumen:

Código:
track.start(0, 1);
track.setVolume(80)
Y ahora que la presentacion empiece:

Código:
//this.onEnterFrame es una instruccion que permite repetirse tantas veces como la cabeza lectora pase por el frame
this.onEnterFrame = function():Void  {
//trace nos permitira ver la progresion del sonido. Esto no afecta en nada a la ejecucion del programa. Se puede eliminar esta linea.
	trace("Posicion: "+track.position+" Duracion: "+track.duration);
//Si la posicion del sonido es menor que el valor de la variable "posicion1", aplica un "_alpha" constane de +=2;
	if (track.position<posicion1) {
		foto1.alfaMas(2);
	}
//Si la posicion del track es mayor que "posicion1" y menor que "posicion2", aplica una reduccion del "_alpha" a "foto1", y un incremento a "foto2".
	if (track.position>posicion1 && track.position<posicion2) {
		foto1.alfaMenos(2);
		foto2.alfaMas(2);
	}
	if (track.position>posicion2 && track.position<posicion3) {
		foto2.alfaMenos(2);
		foto3.alfaMas(2);
	}
	if (track.position>posicion3 && track.position<posicion4) {
		foto3.alfaMenos(2);
		foto4.alfaMas(2);
	}
//Si la posicion de "track" es igual al total de milisegundos de "track", es que la musica acabo, y entonces aplicamos "alfaMenos" a la ultima foto y rompemos "onEnterFrame";
	if (track.position == duracion) {
		foto4.alfaMenos(2);
		delete this.onEnterFrame;
	}
};
Si hay alguna duda dimelo ok?

http://download.yousendit.com/139031AD563B3BF8

Última edición por André_01; 22/11/2006 a las 09:07 Razón: Un link con el ejemplo
  #5 (permalink)  
Antiguo 22/11/2006, 19:11
 
Fecha de Ingreso: junio-2005
Mensajes: 66
Antigüedad: 12 años, 6 meses
Puntos: 0
Gracias por tu interes!
Entiendo que mas o menos que hasta que nosotros no le damos un in a cada mc en la progresion del track de sonido el mc permanece transparente.
Es una gran idea, voy a intentar aunque todavia estoy verde con action script.
Te dejo mi msn por si queres agregarme asi te voy diciendo mis dudas si te encuentro. Muchisimas gracias. [email protected]
__________________
Bon Jovi Argentina
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:31.