音乐播放器

package 
{
	import flash.display.MovieClip;
	import flash.media.Sound;
	import flash.media.SoundChannel;
	import flash.net.URLRequest;
	import flash.events.MouseEvent;
	import fl.events.SliderEvent;
	import flash.media.SoundTransform;
	import flash.events.ProgressEvent;
	import flash.events.Event;
	import flash.display.Loader;
	import flash.net.URLLoader;
	import flash.text.TextField;
	import flash.text.TextFormat;
	import fl.data.DataProvider;
	public class MP3Main extends MovieClip
	{
		private var sound:Sound;
		private var soundchannel:SoundChannel;
		private var position:Number = 0;
		private var soundtransform:SoundTransform;
		
		private var jiazaitiao:JiaZaiTiao;
		private var jiazaikuang:JiaZaiKuang;
		
		private var songs:Array = ["刀郎 - 萨拉姆毛主席.mp3","曲婉婷 - 我的歌声里.mp3","苏打绿 - 我只在乎你.mp3","苏打绿 - 无与伦比的美丽.mp3","林宥嘉-你是我的眼.mp3"];
		private var i:int = 0;
		
		private var lyric_arr:Array;
		private var n:int = 0;
		
		private var dp:DataProvider = new DataProvider();
		private var loader:URLLoader;
		private var textF:TextFormat;
		public function MP3Main()
		{
			sound = new Sound();
			soundchannel = new SoundChannel();
			soundtransform = new SoundTransform();
			
			textF = new TextFormat();
			textF.size = 10;
			textF.align = "center";
			textF.color = 0x9900cc;
		    //music_txt.setTextFormat(textF);
//			lyric_txt.setTextFormat(textF);
			lyric_arr = new Array("music lyric.xml");
			
			dp.addItem({ label:"顺序播放"});
			dp.addItem({ label:"单曲循环"});
			combobox.dataProvider = dp;
			combobox.prompt = "播放模式";
			combobox.textField.setStyle("textFormat",textF);
			
			
			//实例化加载条,设置加载条属性
			jiazaitiao = new JiaZaiTiao();
			jiazaikuang = new JiaZaiKuang();
			jiazaitiao.scaleX = 0;
			jiazaikuang.scaleX = 0;
			jiazaitiao.x = 197;
			jiazaitiao.y = 362;
			//定义舞台按钮的名字
			xiayishou.label = "Next";
			shangyishou.label = "Back";
			shangyishou.enabled =false;
			btn1.label = "播放";
			btn2.label = "停止";
			//设置音量控制条的初始值
			slider.value = 10;
			//将按钮呈现到舞台
			addChild(jiazaitiao);
			addChild(xiayishou);
			addChild(shangyishou);
			
			loader = new URLLoader();
			loader.load(new URLRequest(lyric_arr[n]));
			loader.addEventListener(Event.COMPLETE,setXml);
			loader.addEventListener(Event.COMPLETE,setXml2);
			
			//将歌曲放在家在音乐的数组里,逐一检索使用
			sound.load(new URLRequest(songs[i]));
			//为音量控制条添加点击事件
			slider.addEventListener(SliderEvent.CHANGE,onSliderHandler);
			//为播放暂停按钮添加点击事件
			btn1.addEventListener(MouseEvent.CLICK,onClickHandler);
			btn2.addEventListener(MouseEvent.CLICK,onStopHandler);
			//为音乐按钮添加点击事件
			sound.addEventListener(ProgressEvent.PROGRESS,onJiaZaiKuangHandler);
			sound.addEventListener(Event.COMPLETE,onJiaZaiTiaoHandler);
			soundchannel.addEventListener(Event.SOUND_COMPLETE,onSoundCompleteHandler);
			//舞台每秒侦听一次
			stage.addEventListener(Event.ENTER_FRAME,onEventHandler);
			//点击下一首的事件
			xiayishou.addEventListener(MouseEvent.CLICK,onXiayishouHandler);
			shangyishou.addEventListener(MouseEvent.CLICK,onShangyishouHandler);
			
			//combobox.addEventListener(Event.CHANGE,onChangeHandler);
		}
		private function onSliderHandler(e:SliderEvent):void
		{
			soundtransform.volume = (e.target.value)* 0.2;
			soundchannel.soundTransform = soundtransform;
		}
		private function onClickHandler(e:MouseEvent):void
		{

			if (btn1.label == "播放")
			{
				soundchannel = sound.play(position);
				btn1.label = "暂停";
			}
			else
			{
				position = soundchannel.position;
				soundchannel.stop();
				btn1.label = "播放";
			}
		}
		private function onStopHandler(e:MouseEvent):void
		{
			soundchannel.stop();
			btn1.label = "播放";
			position = 0;
		}
		private function onJiaZaiKuangHandler(e:ProgressEvent):void
		{
			jiazaikuang.scaleX = e.bytesLoaded / e.bytesTotal;
		}
		private function onJiaZaiTiaoHandler(e:Event):void
		{
			if (btn1.label == "播放")
			{
				soundchannel = sound.play();
			}
			 soundchannel.stop();
           
		}
		private function onEventHandler(e:Event):void
		{
			jiazaitiao.scaleX = soundchannel.position / sound.length;
			 
		}
		private function onShangyishouHandler(e:MouseEvent):void
		{
			setXml2(e);
			i--;
			sound = new Sound();
			soundchannel.stop();
			sound.load(new URLRequest(songs[i]));
			soundchannel = sound.play();
			if(btn1.label == "播放")
			{
				btn1.label = "暂停";
			}
			if( i==0)
	        {
				trace (shangyishou.enabled);
				shangyishou.enabled =false;
				xiayishou.enabled =true;
			}
			else
			{
				shangyishou.enabled =true;
	            xiayishou.enabled =true;
			}
			
		}
		private function onXiayishouHandler(e:MouseEvent):void
		{
			setXml(e);
			i++;
			sound = new Sound();
			soundchannel.stop();
			sound.load(new URLRequest(songs[i]));
			soundchannel = sound.play();
			if(btn1.label == "播放")
			{
				btn1.label = "暂停";
			}
			if(i==4)
			{
				trace(xiayishou.enabled);
				xiayishou.enabled =false;
			    shangyishou.enabled = true;
			}
			else
			{
				shangyishou.enabled = true;
			    xiayishou.enabled =true;
			}
			
		}
        private function setXml(e:Event):void
		{
		   var xml:XML = new XML(loader.data);
			if(xiayishou.label == "Next")
			{
			   soundchannel.stop();
			   n++;
			   music_txt.text =xml.music1[n];
			   lyric_txt.text =xml.lyric[n];
			}
		}
		private function setXml2(e:Event):void
       {
		   var xml:XML = new XML(loader.data);
		  if (shangyishou.label == "Back")
		   {
			   soundchannel.stop();
			   n--;
			   music_txt.text =xml.music1[n];
			   lyric_txt.text =xml.lyric[n];
		   }
		}
		private function onSoundCompleteHandler(e:Event):void
		{
			//if(soundchannel.position/sound.length == 1)
//			{
//				 trace(111111111);
//			     soundchannel.stop();
//				 i++;
//				 soundchannel = sound.play(songs[i]);
//			}
             trace(11111111);
			 i++;
             soundchannel=sound.play(songs[i]);
	         soundchannel.addEventListener(Event.SOUND_COMPLETE,onSoundCompleteHandler);

		}
		//private function onChangeHandler(e:Event):void
//		{
//			trace(combobox.value);
//			if(combobox.value == "顺序播放")
//			{
//				
//			}
//			if(combobox.value == "单曲循环")
//			{
//				
//			}
//		}
	}
}

  

posted @ 2012-10-24 21:30  小糊涂仙儿  阅读(223)  评论(0)    收藏  举报