Ver Mensaje Individual
  #4 (permalink)  
Antiguo 22/11/2006, 09:01
André_01
 
Fecha de Ingreso: agosto-2006
Mensajes: 159
Antigüedad: 17 años, 8 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