Flex简单的Mp3播放器。
这两天学习了下Flex3,至于为何不是4呢,这个原因没想过,呵呵,
自己尝试着写了很简单的Mp3播放器,虽然网上这类资源很多,但是大多数都有错误,或不完整,自己写的这个放在这里一是做个标记,方便以后自己学习,而是抛砖引玉,大家共同学习学习。
功能如下:
???????????? 1,播放远程mp3文件:请大家在URL中添加自己要试听歌曲的URL,这里看了两天神话,就用的《星月神话》
???????????? 2,暂停
????????? ?? 3,继续播放
???????????? 4,停止
???????????? 5,从网络上下载歌曲的进度显示
???????????? 6,歌曲播放进度显示
???????????? 7,支持歌曲播放进度的拉动播放
???????????? 8,音乐大小的调整
代码如下:
????????????
<?xml version="1.0" encoding="utf-8"?><mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()" > <mx:Script> <![CDATA[ import mx.core.SoundAsset; import flash.media.*; import mx.controls.Alert; import flash.net.*; import flash.utils.Timer; public var myurl:String = "http://joy.online.sh.cn/joys/gb/images/site1/20091229/90e6ba45adf30ca3abfe28.mp3"; public var request:URLRequest = new URLRequest(myurl); public var mySong:SoundAsset = new SoundAsset(); public var channel:SoundChannel; public var temp:Number = 0; [Bindable] public var tempper:Number = 0; public var timer:Timer; public var soundtransform:SoundTransform = new SoundTransform(0.5,0); private var myTimer:Timer = new Timer(10, 0); //标志当前是否继续播放,0 播放 1,不播放 public var flag:Number; public function init():void{ //加载远程URL, mySong.load(request); // mybar.source = loader; //创建侦听器, 小括号内的第二个参数就是下面将要重复执行的函数 myTimer.addEventListener(TimerEvent.TIMER, timerHandler); myTimer.start(); } private function timerHandler(event:TimerEvent):void{ //功能: 显示音乐的播放进度, 进度条会随着音乐的继续播放而向右缓缓移动; //播放进度条的值=(当前音乐播放时间/音乐的总时间)*100 百分比显示 tempper = (channel.position/mySong.length)*100; myprocess.value = tempper; } //播放按钮 public function play():void { // 先 停止 stop(); // 在播放 channel = mySong.play(0,int.MAX_VALUE); } //停止按钮 public function stop():void { // 停止 if ( channel != null ) channel.stop();temp = 0;flag = 1; } //暂停 public function pause():void{temp = channel.position;channel.stop();flag = 0; } //继续按钮public function playcontinue():void{//判断是否有上次暂停的记录if(temp!=0){//判断当前是否正在播放歌曲 if(flag ==0){ channel = mySong.play(temp,int.MAX_VALUE); flag = 1; } else { Alert.show("正在播放歌曲"); } } else { Alert.show("请先播放歌曲"); }}//结束 public function over():void{ Alert.show("It's Over!"); } //音量 public function volume():void{ soundtransform.volume = vol.value; channel.soundTransform = soundtransform; } //歌曲滑动条 public function changeprocess():void{temp = (myprocess.value/100)*mySong.length;channel.stop();channel = mySong.play(temp,int.MAX_VALUE); } ]]> </mx:Script> <mx:Panel width="674" height="360" layout="absolute" fontSize="16" horizontalCenter="-5" verticalCenter="-5"> <mx:Button label="暂停" click="pause();" x="208" y="42"/> <mx:Button label="停止" click="stop();" x="371" y="42"/> <mx:Button label="播放" click="play();" x="140" y="42"/> <mx:Button label="继续" click="playcontinue();" x="290" y="42"/> <mx:HSlider x="140" y="241" id="vol" allowTrackClick="true" minimum="0.5" maximum="1" snapInterval="0.1" change="volume()" labels="音量" valueCommit="channel" /> <mx:HSlider x="150" y="128" minimum="0" maximum="100" id="myprocess" allowTrackClick="true" change="changeprocess()"/> <mx:ProgressBar x="140" y="196" direction="right" width="291" source="mySong" minimum="1" maximum="100" indeterminate="false" enabled="true" labelPlacement="center"/> <mx:Label id="songjindu" x="140" y="109" text="已完成:{tempper.toFixed(2)}%" height="28" /> <mx:Label x="140" y="164" text="已下载:" width="60"/> </mx:Panel> </mx:Application>
?截图:
??????? 见附件
大家一起学习学习! 还有感谢Ethan 给我的学习建议---API是最好的学习资料。
1 楼 三尺寒冰 2011-02-19 是新建flex项目吗?