Comunidad de diseño web y desarrollo en internet online

Funcion de Sonido

Citar            
MensajeEscrito el 23 Oct 2008 10:04 pm
Hola tengo una función que debería cargar un sonido luego reproducirlo y al final cuando concluye el sonido tiene que ejecutar una acción...

Código :

function Voz(Audio){
   var Canal_Voz:Sound = new Sound();
   Canal_Voz.loadSound(Audio, true);
   Canal_Voz.start();
}

Voz("Archivo.mp3");


el problema es que no carga el sonido y el inconveniente esta en la función porque probé el código sin la función

Código :

var Canal_Voz:Sound = new Sound();
Canal_Voz.loadSound("Archivo.mp3", true);
Canal_Voz.start();


y funciona bien. como puedo hacer para que la función marche bien, ya que necesito utilizarla un montón de veces en mi Proyecto

Saludos

Por Zis

Claber

314 de clabLevel

1 tutorial

Genero:Masculino  

Bell Ville - Cordoba - Argentina

firefox
Citar            
MensajeEscrito el 24 Oct 2008 05:31 am
El problema que tienes allí es que declaras la variable "Canal_Voz" dentro de la función, así que cuando la función termina, la variable pierde su ámbito. Declara el objeto Sound fuera de la función y deja el resto como está.
Por cierto, si el stream está activado (el segundo parámetro) no hace falta el start.

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

firefox
Citar            
MensajeEscrito el 24 Oct 2008 07:02 am
Lo que te ha dicho The Fricky! es así.
De todas formas, te puedo comentar cómo hago yo en mis proyectos.

Normalmente tengo varios sitios dentro de la película donde se pueden escuchar voces o sonidos. Por ejemplo, imagínate una película que se compone de varias pantallas. Cada una de esas pantallas tiene asociada una voz. Al entrar en alguna de esas pantallas, la voz tiene que sonar automáticamente; en otras, en cambio, la voz tiene que sonar al hacer clic sobre un botón o algo así.

La estructura de mis películas de este tipo suele ser:
frame1 -- inicialización de variables, funciones, etc.

frame 5 -- primera pantalla

frame 10 -- segunda pantalla

frame ......

Yo, en vez de hacer POO (programación orientada a objetos), suelo hacer POF (programación orientada a frames). Es que vengo de Director, qué le voy a hacer.

Te cuento mis procedimientos que, aunque no sean muy ortodoxos, son muy simples de entender y seguir y funcionan bien.

Lo primero de todo, en la línea de tiempo de la película creo una psta a la que suelo llamar "audioCTRL". Es una pista en la que meteré los comandos de control de audio en los frames necesarios.

En el frame 1 creo el objeto de sonido que va a cargar las voces y creo una variable global de estado que me dirá si el sonido está parado, si se está escuchando o si es necesario que arranque según se entra en una pantalla:

_global.soundBusy = 0; // variable de estado
voz = new Sound (); // objeto de sonido

la variable de estado toma estos valores:
0 -- sonido parado.
1 -- sonido sonando (vlaga la redundancia)
2 -- sonido tiene que arrancar al entrar en la pantalla

También en este frame declaro las voces y sonidos que vou a usar mediante variables

var Take1 = "voz1.mp3";
var Take2 = "voz2.mp3";
......
Cuando llego al frame de una pantalla, en la pista "audioCTRL" creo un keyframe en el que meto el siguiente código

if (_global.soundBusy == 2) {
voz.loadSound (dir + take1, true);
_global.soundBusy = 1;
voz.start ();
}
voz.onSoundComplete = function () {
voz.stop ();
_global.soundBusy = 0;
};

Lo del "voz.start(); lo sigo usando porque en varias ocasiones (no sé por qué) el sonido no se me activaba si no le ponía este comando.

Obviamente, esto se podría estructurar en funciones generales y llamarlas desde cualquier punto de la película.

Se podría implementar una función "vozStop" que sería como la de onSoundComplete o una "vozPlay" que sería como la que tengo en la cláusula if, asignadas a botones.

También, cuando se pasa de una pantalla a otra, sólo se tiene que poner la variable "soundBusy" a 0 ó a 2 para que el sonido continúe parado o arranque automáticamente al entrar en la siguiente pantalla.

Espero que te pueda servir de algo.

Por CidDeMizar

81 de clabLevel



 

msie7

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.