
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;
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 loader:URLLoader;
private var textF:TextFormat;
public function MP3Main()
{
sound = new Sound();
soundchannel = new SoundChannel();
soundtransform = new SoundTransform();
textF = new TextFormat("宋体",20);
music_txt.setTextFormat(textF);
lyric_txt.setTextFormat(textF);
lyric_arr = new Array("music lyric.xml");
//实例化加载条,设置加载条属性
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);
//舞台每秒侦听一次
stage.addEventListener(Event.ENTER_FRAME,onEventHandler);
//点击下一首的事件
xiayishou.addEventListener(MouseEvent.CLICK,onXiayishouHandler);
shangyishou.addEventListener(MouseEvent.CLICK,onShangyishouHandler);
}
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
{
i--;
sound = new Sound();
soundchannel.stop();
sound.load(new URLRequest(songs[i]));
soundchannel = sound.play();
if( i==0)
{
trace (shangyishou.enabled);
shangyishou.enabled =false;
xiayishou.enabled =true;
}
else
{
shangyishou.enabled =true;
xiayishou.enabled =true;
}
setXml2(e);
}
private function onXiayishouHandler(e:MouseEvent):void
{
i++;
sound = new Sound();
soundchannel.stop();
sound.load(new URLRequest(songs[i]));
soundchannel = sound.play();
if(i==4)
{
trace(xiayishou.enabled);
xiayishou.enabled =false;
shangyishou.enabled = true;
}
else
{
shangyishou.enabled = true;
xiayishou.enabled =true;
}
setXml(e);
}
private function setXml(e:Event):void
{
var xml:XML = new XML(loader.data);
if(xiayishou.label == "Next")
{
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")
{
n--;
music_txt.text =xml.music1[n];
lyric_txt.text =xml.lyric[n];
}
}
}
}