Jump to content


luiz softov

Member Since 23/01/2009
Offline Last Active 01/06/2009, 20:47
-----

Topics I've Started

As3 - Player Web Radio - Ao Vivo - Problemas

23/01/2009, 16:48

olá, sou novo aqui e este é meu primeiro post... tenho um problema no meu player....


tipo eu coloquei para ele começar tocando

então ele inicial com

play();

ae quando o usuario clica em stop ele para de tocar...

quando o usuário clica em play novamente a radio torna a tocar...

ae quando o usuario clica em stop ele para de tocar...

até ai funciona tudo direito....

só que quando ele clica em play novamente ela já nao toca mais...


tipo
play(funciona) > stop(funciona) > play(funciona) > stop(funciona) > play(erro)


abaixo segue o código

var url:String = "http://192.168.2.2:8000/";;
var request:URLRequest;
var s:Sound;
var song:SoundChannel;
var ba:ByteArray;
var gr:Sprite;
var time:Timer;
var volumecontrole:SoundTransform = new SoundTransform(); 
var par = "0.6"; // volume inicial

function radiotoca(event:Event):void {
	SoundMixer.stopAll();
	music();
	setVolume(par);
	btnstop.visible = true;
	btnplay.visible = false;
	return;
	
}

function radiopara(event:Event):void {
	SoundMixer.stopAll();
	time.stop();
//	setVolume(0);
	btnstop.visible = false;
	btnplay.visible = true;
	return;
}

function music():void {

	
	trace("carregando");
	request = new URLRequest(url);
	s = new Sound();
	var context:SoundLoaderContext = new SoundLoaderContext(100, true);
	s.load(request, context);
	song = s.play();
	
	
	trace("carregado");
	ba = new ByteArray();
	if (!gr) {
		gr = new Sprite();
		gr.x = 20;
		gr.y = 57;
		addChild(gr);
	}
	time = new Timer(50);
	time.addEventListener(TimerEvent.TIMER, timerHandler);
	time.start();
	
}

function timerHandler(event:TimerEvent):void {
	SoundMixer.computeSpectrum(ba, true);
	var i:int;
	gr.graphics.clear();
	gr.graphics.lineStyle(6, 0x333333);
	gr.graphics.beginFill(0x91C847);
	gr.graphics.moveTo(0, 0);
	var w:int = 10;
	for (i=0; i<310; i+=w) {
		var t:Number = ba.readFloat();
		var n:Number = (t * 40);
		gr.graphics.drawRect(i, 0, w, -n);
	}
}


barravolume.mute.addEventListener(MouseEvent.CLICK, volumeEvent);
barravolume.mute.addEventListener(MouseEvent.ROLL_OVER, volumeEvent);
barravolume.volumeOne.addEventListener(MouseEvent.CLICK, volumeEvent);
barravolume.volumeOne.addEventListener(MouseEvent.ROLL_OVER, volumeEvent);
barravolume.volumeTwo.addEventListener(MouseEvent.CLICK, volumeEvent);
barravolume.volumeTwo.addEventListener(MouseEvent.ROLL_OVER, volumeEvent);
barravolume.volumeThree.addEventListener(MouseEvent.CLICK, volumeEvent);
barravolume.volumeThree.addEventListener(MouseEvent.ROLL_OVER, volumeEvent);
barravolume.volumeFour.addEventListener(MouseEvent.CLICK, volumeEvent);
barravolume.volumeFour.addEventListener(MouseEvent.ROLL_OVER, volumeEvent);
barravolume.volumeFive.addEventListener(MouseEvent.CLICK, volumeEvent);
barravolume.volumeFive.addEventListener(MouseEvent.ROLL_OVER, volumeEvent);

btnplay.addEventListener(MouseEvent.MOUSE_UP, radiotoca);
btnstop.addEventListener(MouseEvent.MOUSE_UP, radiopara);

music(); // altera para radio começar a tocar automaticamente

btnplay.visible = false;
setVolume(par);

		function volumeEvent(param1:MouseEvent) : void
		{
			var _loc_2:MovieClip;
			_loc_2 = param1.currentTarget as MovieClip;
			if (param1.buttonDown || param1.type == "click")
			{
				switch(param1.currentTarget)
				{
					case barravolume.mute:
					{
						if (volumecontrole.volume > 0)
						{
							setVolume(0);
							par = 0;
						}
						else
						{
							setVolume(0.1);
							par = 0.1;
						}// end else if
						break;
					}// end case
					case barravolume.volumeOne:
					{
						setVolume(0.2);
						par = 0.2;
						break;
					}// end case
					case barravolume.volumeTwo:
					{
						setVolume(0.4);
						par = 0.4;
						break;
					}// end case
					case barravolume.volumeThree:
					{
						setVolume(0.6);
						par = 0.6;
						break;
					}// end case
					case barravolume.volumeFour:
					{
						setVolume(0.8);
						par = 0.8;
						break;
					}// end case
					case barravolume.volumeFive:
					{
						setVolume(1);
						par = 1;
						break;
					}// end case
					default:
					{
						break;
					}// end default
				}// end switch
			}// end if
			return;
		}// end function
		
		
		function setVolume(param1) : void
		{
			volumecontrole.volume = param1;
			song.soundTransform = volumecontrole;
			barravolume.mute.gotoAndStop(param1 > 0 ? (1) : (2));
			barravolume.volumeOne.gotoAndStop(param1 >= 0.2 ? (1) : (2));
			barravolume.volumeTwo.gotoAndStop(param1 >= 0.4 ? (1) : (2));
			barravolume.volumeThree.gotoAndStop(param1 >= 0.6 ? (1) : (2));
			barravolume.volumeFour.gotoAndStop(param1 >= 0.8 ? (1) : (2));
			barravolume.volumeFive.gotoAndStop(param1 == 1 ? (1) : (2));
			return;
		}// end function

o fla segue abaixo

Link do FLA 112 kb


até mais

function radiopara(event:Event):void {
	SoundMixer.stopAll();
	time.stop();
	setVolume(0);
	btnstop.visible = false;
	btnplay.visible = true;
	return;
}

mude para

function radiopara(event:Event):void {
	SoundMixer.stopAll();
	s.close();
	time.stop();
	setVolume(0);
	btnstop.visible = false;
	btnplay.visible = true;
	return;
}

IPB Skin By Virteq