首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > flex >

Flex简略的Mp3播放器

2012-11-22 
Flex简单的Mp3播放器。这两天学习了下Flex3,至于为何不是4呢,这个原因没想过,呵呵,自己尝试着写了很简单的M

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项目吗?
为什么我的提示:
[SWF] ting.swf - 解压缩后为 174,897 个字节
[SWF] ting.swf/[[DYNAMIC]]/1 - 解压缩后为 370,463 个字节
[SWF] ting.swf/[[DYNAMIC]]/2 - 解压缩后为 2,311,734 个字节
[SWF] ting.swf/[[DYNAMIC]]/3 - 解压缩后为 650,777 个字节
[SWF] ting.swf/[[DYNAMIC]]/4 - 解压缩后为 441,362 个字节
[SWF] ting.swf/[[DYNAMIC]]/5 - 解压缩后为 1,432,382 个字节
[SWF] ting.swf/[[DYNAMIC]]/6 - 解压缩后为 323,354 个字节
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at ting/timerHandler()[D:\我的文档\flex\ting\src\ting.mxml:42]
at flash.utils::Timer/_timerDispatch()
at flash.utils::Timer/tick()
到这里就不行了。。。

热点排行