刚开始学flex4没多久,练练手,做了个flex4的简易MP3播放器,自娱自乐而已呵呵。
希望大家多多指点一下。
感觉flex4与以前的版本相比变化较大,而且很多教程都还是flex3的,所以在制作的时候还是遇到了些麻烦的事情。
此程序为AIR工程,使用Flash Buidler 4 ,制作,新建项目时使用AIR项目。
文件结构:
music.swf 主运行文件
musiclist.xml 歌曲列表
music文件夹 存放歌曲的地方
在运行本程序的时候记得先编辑歌曲列表,再将MP3歌曲放在music文件夹
嘿嘿,此播放器如果不人工操作,只能单曲循环……
贴一下代码:
<?xml version="1.0" encoding="utf-8"?> <s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" width="206" height="227" showStatusBar="false" applicationComplete="init_play()" backgroundColor="#82826b"> <fx:Script> <![CDATA[ import mx.events.ListEvent; private var goon:Boolean=true; private var musicS:Sound; private var musicSC:SoundChannel; private var url_t:String="music/"; private var url_s:String=""; private var temp_name:String=""; private var pause:Boolean=false; private var time:Number; private function init_play():void{ music_play.enabled=false; music_stop.enabled=false } private function musicS_play():void{ if(goon){ if(pause){ musicSC=musicS.play(time); musicSC.soundTransform=new SoundTransform(volume.value/10); music_play.label="暂停"; goon=false; pause=false; }else{ musicS=new Sound(new URLRequest(url_s)); musicSC=musicS.play(); musicSC.addEventListener(Event.SOUND_COMPLETE,next_play); music_name.text=temp_name; musicSC.soundTransform=new SoundTransform(volume.value/10); music_play.label="暂停"; music_stop.enabled=true; goon=false; pause=false; } }else{ music_play.label="开始"; goon=true; pause=true; time=musicSC.position; musicSC.stop(); } } private function next_play(event:Event):void{ goon=true; pause=true; time=0; musicS_play(); musicSC.addEventListener(Event.SOUND_COMPLETE,next_play); } protected function music_play_clickHandler(event:MouseEvent):void { musicS_play(); } protected function music_list_changeHandler(event:ListEvent):void { music_play.enabled=true; url_s=url_t+music_list.selectedItem.path; temp_name=music_list.selectedItem.title; } protected function volume_changeHandler(event:Event):void { if(!goon){ musicSC.soundTransform=new SoundTransform(volume.value/10); } } protected function music_stop_clickHandler(event:MouseEvent):void { music_play.enabled=false; music_stop.enabled=false; goon=true; pause=false; musicSC.stop(); music_play.label="开始"; } ]]> </fx:Script> <fx:Declarations> <fx:Model id="musicData" source="musiclist.xml"/> <s:ArrayList id="musicList" source="{musicData.music}"/> </fx:Declarations> <s:Button x="10" y="188" label="开始" id="music_play" click="music_play_clickHandler(event)" width="51" cornerRadius="9"/> <s:HSlider x="129" y="188" width="67" height="15" id="volume" change="volume_changeHandler(event)" minimum="0" maximum="10" value="5"/> <s:Label x="10" y="10" width="186" height="16" id="music_name" fontSize="12" text="歌曲名称" fontStyle="normal" fontWeight="normal" textDecoration="none" fontFamily="Arial" color="#7C2F00"/> <mx:DataGrid y="34" width="187" height="146" id="music_list" dataProvider="{musicList}" change="music_list_changeHandler(event)" dropShadowVisible="false" borderAlpha="0.6" selectedIndex="0" x="9"> <mx:columns> <mx:DataGridColumn headerText="曲目" dataField="title"/> <mx:DataGridColumn headerText="path" dataField="path" visible="false"/> </mx:columns> </mx:DataGrid> <s:Button x="70" y="188" label="停止" id="music_stop" width="51" click="music_stop_clickHandler(event)" cornerRadius="9"/> <mx:Image x="138" y="2" width="55" height="31" source="EyeT.gif"/> </s:WindowedApplication>