Estoy teniendo un problema con un código en AS3. Es una clase que para una radio online, que me permite oir la transmisión. De hecho todo funciona correctamente y ya está en producción (lo podeis ver en http://radio.billycountry.com). Pero el problemilla (pequeño) que tengo es que necesito saber (como evento) cuando se ha cortado definitivamente (o se ha vaciado el buffer) para poder hacer otras cosas. En concreto sería que cuando la emisora 1 deja de emitir automaticamente con el evento de fin de streaming, yo pueda activar la emisora 2.
Os paso el código por si me podeis ayudar.
De antemano, recibid un cordial saludo.
Tony
Codigo:
Código ActionScript :
package {
import flash.display.Sprite;
import flash.net.URLRequest;
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.media.SoundTransform;
import flash.media.SoundLoaderContext;
import flash.events.Event;
//--------------------------
public class Sonido extends Sprite {
public var so:Sound;
private var url:URLRequest;
private var buffer:SoundLoaderContext;
private var ini:Number;
private var loop:Number;
private var channel:SoundChannel = new SoundChannel();
//----------------------
public function Sonido() {
}
public function stopStream()
{
so.close();
trace("antes "+so)
channel.stop();
so = null;
if(so==null)
trace("nulo")
channel.dispatchEvent(new Event(Event.SOUND_COMPLETE));
}
public function playStream(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);
channel = so.play(ini, loop);
channel.soundTransform=new SoundTransform(1);
channel.addEventListener(Event.SOUND_COMPLETE, soundCompleteHandler);
}
public function soundCompleteHandler(event:Event):void {
trace("FIN" + event);
channel.soundTransform=new SoundTransform(0);
}
}
} 