Este es un pequeño ejemplo de cómo reproducir archivos de sonido en Flash o Flex con actionscript 3.
Esta es la clase que crearemos:
Código :
package { import flash.display.Sprite; import flash.net.URLRequest; import flash.media.Sound; import flash.media.SoundLoaderContext; //-------------------------- public class Sonido extends Sprite { private var so:Sound; private var url:URLRequest; private var buffer:SoundLoaderContext; private var ini:Number; private var loop:Number; //---------------------- public function Sonido(qUrl:String, qBuffer:Number, qIni:Number, qLoop:Number) { url = new URLRequest(qUrl); buffer = new SoundLoaderContext(qBuffer*1000); ini = qIni*1000; loop = (qLoop >= 0) ? qLoop : int.MAX_VALUE; so = new Sound(url, buffer); so.play(ini, loop); } } }
Debe ir en un archivo llamado "Sonido.as", situado junto a nuestro archivo .FLA
Para utilizarla colocaríamos en nuestra película flash:
Código :
import Sonido; var so:Sonido = new Sonido("audio.mp3", 3, 0, -1);
Explicación del código:
La clase contiene 5 variables privadas, 4 de las cuales debemos introducir como parámetro a la hora de generar la instancia. Estas variables son:
url: ruta del archivo mp3 buffer: tiempo del archivo de audio que estará cargado en memoria antes de reproducirse. ini: posición en la que se comenzará a reproducir el audio loop: cantidad de veces que se repetirá el audio.
No hay manera de asignar un loop que se repita continuamente, pero un truco para hacer esto sería colocar un número de repeticiones muy elevado, por eso este código:
loop = (qLoop >= 0) ? qLoop : int.MAX_VALUE;
Controla que el valor que le introducimos sea mayor que cero. En caso de introducirle un valor negativo asignará el número de repeticiones al máximo posible en flash (int.MAX_VALUE) osea 2147483647.
que bien, estaba buscando la manera de hacer eso, bueno, en realidad no pero si me va a ser (muy) útil en próximos proyectos en mente.
Gracias Por:open_eye_blog
Es que no es posible encerrar
so.play(ini, loop);
en un bucle? Por:Paulo_blog
eveevans_blog :
por que heredamos de Sprite?
Siempre que quieras colocar algo en la linea de tiempo de tu pelicula (ya sea un Movieclip, un video, un audio...) has de extender de Sprite Por:Zguillez
Paulo_blog :
Es que no es posible encerrar
so.play(ini, loop);
en un bucle?
Al pasarle el valor de repetición ya lo estas metiendo en un bucle. Lo que no puedes definirlo como bucle infinito... pero el valor int.MAX_VALUE hace que se repita 2147483647, con lo que no creo que nadie llegue al final del bucle... Por:Zguillez
Mmmm así no puedes acceder a las propiedades del sonido. Una opción es hacer que la clase directamente extienda a Sound, así tenemos una clase lista para cargar el sonido y totalmente funcional:
Código :
package { import flash.display.Sprite; import flash.net.URLRequest; import flash.media.Sound; import flash.media.SoundLoaderContext; //-------------------------- public class Sonido extends Sound{ //public var so:Sound; private var path:URLRequest=null; private var buffer:SoundLoaderContext; private var ini:Number; private var loop:Number; //---------------------- public function Sonido(qUrl:String, qBuffer:Number, qIni:Number, qLoop:Number) { path = new URLRequest(qUrl); buffer = new SoundLoaderContext(qBuffer*1000); ini = qIni*1000; loop = (qLoop >= 0) ? qLoop : int.MAX_VALUE; //so = new Sound(url, buffer); this.load(path, buffer) //so.play(ini, loop); this.play(ini,loop); } } }
Bien, bieeeen, muy bien, que es lo contrario de mal. Por:Sisco
NO entiendo algo, he visto los codigos de As3 son TAN! complejos... no los entiendo ya no son como antes, alguien me esplica..¿Que acaso cambio el estilo de ActionScript? En AS2 es mas simple que eso exportar un sonido... Por:Javier_blog
Relaxxxxxxxxx Javier_Blog, jaja, aun podras usar el viejo AS2 Por:ramiro_olver@
Hola, quisiera saber si álguien puede decirme como adjuntar una canción MP3 a una animación hecha en flash, lo ignoro totalmente porque soy muy nuevo en todo ésto, pero me está volviendo loco, porque cuando elijo: Importar y selecciono la canción no me permite abrirla. Desde ya muchas gracias. Lomay Por:Lomay
muy bueno el ejemplo... Por:DevosDev_blog
como le asigno sonido a un personaje que tengo en mi pelicula flash por ejemplo: que tenga la voz del comentario que queremos gracias enviame la respuesta a lufealfa@gmail.com gracias. no te demores.... Por:luifer _blog
1º Ese codigo no sirve para loops, ya que agrega ese maldito silencio al final de cada pasada. Todavia estoy buscando si hay alguna solucion para streamear loops sin la pausa.
2º Sprite es un contenedor de datos, al igual que un movieclip. La unica diferencia es que el movieclip tiene timeline y el sprite no, por ende el movieclip importa mas codigo que un sprite (el sprite es mas liviano). Por:rOY!!!_blog
Me puede explicar mas como funciona esto es que tengo bastantes dudas, por ejemplo en que parte se coloca la URL del mp3
porque veo que hay una qURK;
que signfica
ayuda please!!!!!!!!!!!!!!!!!1 Por:carlosdj_blog
Como hay que hacer para estopear el sonido??
Mi idea es hacer un botón para on y otro para off. ¿Qué tengo que poner en el botón de off para detener el sonido? Por:Pabloq-blog