© Stelios Kourakis 2005

< indice de programación

Práctica: Juguete de Sonidos

En este primer ejemplo aprenderemos a trabajar con sonidos, creando un juguete simple.


Bajar archivo de inicio

 

Bajar resultado final

 

La libreria contiene los clips del interruptor, el botón y el fondo. Adicionalmente, contiene diez clips de sonido, llamados loop1, loop2, ... , loop5, sample1, sample2, ..., sample5. Todos estos sonidos estan vinculados con estos identificadores para su uso en ActionScript.

El clip del interruptor es un clip de pelicula con dos fotogramas, el botón es tipo boton con sus habituales cuatro fotogramas.

 

Montaje

Montamos la pelicula con la siguente manera:

Pensamiento

Los loops

Los interruptores tienen que poder controlar un loop cada uno. Cada loop se puede encender y apagar independientemente de los demás.

Para hacer eso, tenemos que tener un objeto Sound para cada sonido de los loops. Vamos a crear cinco objetos Sound, vinculados a cada uno de los movie clips de los interruptores. Cada interruptor estará encargado de controlar su objeto correspondiente. A cada uno le asignaremos una variable miNumero, para que sepa cual es su sonido.

Un clic al interruptor va a encender o apagar su sonido correspondiente dependiendo de su estado actual. Necesitaremos una variable sueno, para indicarnos si este sonido suena o no.

 

Los samples

Los samples no tienen ningun control - una vez clicado el botón, se reproducen hasta el final sin que sea posible cualquier accion sobre ellos.

Vamos a tener un objeto sound global, el sampleSound, para reproducir todos los samples.

 

A Programar!

En la inicialización de la escena, primero creamos los objetos Sound que vamos a necesitar. Guardamos los diferentes objetos Sound en un array, para mayor facilidad de referencia.

losLoops = [] // un Array para cada sonido loop
for (i=1;i<=5;i++){
losLoops[i]=new Sound(_root["loop"+i+"_btn"]);
}

Luego creamos el objeto sound para los samples.

sampleSound = new Sound(_root.sample1_btn); 

 

Ahora podemos asociar los comportamientos. A cada clip del interruptor, le asociamos sus dos nuevas variables miNumero (refiriendose al sonido asociado) y sueno (si suena o no el loop, por defecto false).

for (i=1; i<=5; i++){
_root["loop"+i+"_btn"].miNumero =i;
_root["loop"+i+"_btn"].sueno = false;

Asociamos el comportamiento al clicar el interruptor:

	_root["loop"+i+"_btn"].onRelease = function(){
        // si estoy sonando, para el sonido.
		if (this.sueno){
			_root.losLoops[this.miNumero].stop();
			this.gotoAndStop(1);
			this.sueno = false;
			
		// si no estoy sonando, inicia la reproducción	
		} else {
			_root.losLoops[this.miNumero].stop()
			_root.losLoops[this.miNumero].attachSound("loop"+this.miNumero);
			_root.losLoops[this.miNumero].start(0,999) //999 bucles
			this.gotoAndStop(2);
			this.sueno = true;
		}
	}	
}

El comportamiento de los botones es mas sencillo. Al clicarse, reproducen su sonido en el objeto sound sampleSound.

// Asignamos comportamiento a los botones de samples

for (i=0; i<=5; i++){
	_root["sample"+i+"_btn"].miNumero =i;
	
	_root["sample"+i+"_btn"].onPress = function(){
		_root.sampleSound.attachSound("sample"+this.miNumero);
		_root.sampleSound.start()
	}	
}

 

 

< indice de programación