¿Quieres registrarte?

Reproducir audio mp3 en Actionscript 3

Por: Zguillez
12 de Enero del 2007
7273 de clabLevel
Otros artículos de Zguillez
40,418 visitas

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.

Enviar a twitter Enviar a facebook


También te interesa


Etiquetas actionscript_3

Comentarios | Enviar un comentario
por que heredamos de Sprite?

extends Sprite
Por: eveevans_blog
que bien, estaba buscando la manera de hacer eso, bueno, en realidad no XD 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);
      }
   }
}

Por: Zah
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
y pa detener el sonido? :(
Por: Carlos-blog
Muchas gracias por este tip!!
pero tengo que confesar que no he podido hacer sonar una canción en mi página de inicio y mucho menos poder controlar el play y el stop.... uso flash con AS 3.0 y solo veo ejemplos para AS 2.0... si lo hago por ese lado funciona pero ya tengo mi pagina montada en la version 3.0
si pudiera orientarme un poco se lo agradeceria infinitamente...
Hasta pronto y gracias por su atención
Por: fantom76fa
gracias, me has sacado de un lío
Por: vjdv-blog
ya eché andar el sonido pero no entiendo como hacer el boton para poder detener el mp3.... alguien que nos pueda ayudar... gracias!
Por: gordoadixion
pa todos...chequen esto, està hecho en AS3
(Un script AS3 y un fla conteniendo la interfase.

http://www.coconnut.com/blog/2008/09/22/flash-cs3-canales-de-sonido-en-actionscript-3/#comments

si alguien encuentra la forma de hacer andar el SonidoPrincipal sin pulsar Play (que inicie automaticamente al cargar), agradecerè que lo posteen acà.
Por: Gabriel-blog
por favor nesesito ayuda urgente, tengo 2 placas de sonido en mi computadora nesesito tirar una cancion por placa al mismo tiempo, gracias y saludos.
Por: robertosebastian92
Gracias
Por: Diseño Webo-blog
hola, me queda la duda de como se haría, según este ejemplo, para parar, pausar, cambiar el volumen, etc. yo probé con so.stop() y no funciona. muchas gracias y saludos a todos
Por: chegue10
Deja un comentario
IMPORTANTE

Recuerda ser respetuoso, no insultes a otras personas, ni uses palabrotas, hay una persona al otro lado de la pantalla.

Habla bien, NO ESCRIBAS EN MAYUSCULA TODO, no escribas como en un SMS, evita cosas como "ke", "x q" y demás abreviaciones.

Aquí funcionan las etiquetas de los foros, puedes usar [b] para negrita, [img] para las imágenes, [url] para los enlaces, etc.

Si tienes preguntas técnicas, envíalas mejor al foro.