·您当前的位置:首页 > 技术教程 > 播放器教程 >

[AS3]as3写了一个mp3播放器很简单附源代码

时间:2014-07-03 12:069ria.com
[AS3]as3写了一个mp3播放器很简单附源代码

代码可能有些乱,和我一样的新手耐心点看哦!(在sound文件夹里面放四首歌,名字改对,就可以运行了)!

  1.   
  2. package { 
  3. import flash.display.Loader; 
  4. import flash.display.Sprite; 
  5. import flash.events.Event; 
  6. import flash.events.MouseEvent; 
  7. import flash.media.Sound; 
  8. import flash.media.SoundChannel; 
  9. import flash.net.URLLoader; 
  10. import flash.net.URLRequest; 
  11. import flash.text.TextField; 
  12. public class PlayMain extends Sprite { 
  13.    
  14.   var num:uint;//CuPlayer.com xml歌曲个数 
  15.   var pausePosition:int;//播放到的地方 
  16.   var currentIndex:int=0;//当前播放第几首歌,默认为第一首 
  17.   var loadtxt:TextField=new TextField();//播放进度值监听文本 
  18.   var soundchannel:SoundChannel=new SoundChannel(); 
  19.   var frame:Sprite=getLoad(290,2,0x2255aa);//播放进度中间的那根条 
  20.   var loadrect:Sprite=getLoad(2,8,0x009900);//播放进度小方块 
  21.   var currentPlay:TextField=new TextField();//当前播放歌曲 
  22.   //创建数组存储歌曲列表信息 
  23.   var songListArray:Array=new Array(); 
  24.   //创建按钮数组存储按钮 
  25.   var buttonArray:Array=new Array(); 
  26.   //创建按钮文本数组 
  27.   var txtArray:Array=new Array(); 
  28.   //创建数组存储声音对象 
  29.   var soundArray:Array=new Array(); 
  30.   //创建数组存储声道对象 
  31.   var channelArray:Array=new Array(); 
  32.    
  33.    
  34.   //构造函数 
  35.   public function PlayMain() { 
  36.    init(); 
  37.   } 
  38.   //CuPlayer.com初始化,加载XML数据 
  39.   private function init():void { 
  40.     
  41.    //当前播放歌曲文本 
  42.    addChild(currentPlay); 
  43.    currentPlay.x=60
  44.    currentPlay.y=60
  45.    currentPlay.width=200
  46.    currentPlay.text="没有歌曲正在播放"
  47.     
  48.    //创建歌曲列表显示文本 
  49.    for(var a:int=0;a<4;a++){ 
  50.     var songtext:TextField=new TextField(); 
  51.     songtext.selectable=false
  52.     songtext.width=200
  53.     songtext.textColor=0xff0000
  54.     addChild(songtext); 
  55.     songtext.x=400
  56.     songtext.y=20+a*20; 
  57.     songListArray.push(songtext); 
  58.    } 
  59.    //CuPlayer.com创建按钮 
  60.    for(var j:int=0;j<5;j++){ 
  61.     var sp:Sprite=getButton(); 
  62.      
  63.     addChild(sp); 
  64.     sp.x=j*60+50; 
  65.     sp.y=200
  66.     buttonArray.push(sp); 
  67.    } 
  68.     
  69.    //CuPlayer.com创建文本 
  70.    for(var m:int=0;m<5;m++){ 
  71.     var txt:TextField=new TextField(); 
  72.     txtArray.push(txt); 
  73.    } 
  74.    //CuPlayer.com给文本赋值 
  75.    txtArray[0].text="播放"
  76.    txtArray[1].text="暂停"
  77.    txtArray[2].text="停止"
  78.    txtArray[3].text="上一曲"
  79.    txtArray[4].text="下一曲"
  80.    //显示文本到按钮 
  81.    for(var i:int=0;i<5;i++){ 
  82.     txtArray[i].selectable=false
  83.     buttonArray[i].addChild(txtArray[i]); 
  84.    } 
  85.     
  86.    //显示播放进度文本到舞台 
  87.    stage.addChild(loadtxt); 
  88.    loadtxt.x=230
  89.    loadtxt.y=100
  90.     
  91.    //显示进度条到舞台 
  92.     
  93.    stage.addChild(frame); 
  94.    frame.x=50
  95.    frame.y=130
  96.    stage.addChild(loadrect); 
  97.    loadrect.x=50
  98.    loadrect.y=127
  99.     
  100.    //填充数组 
  101.    for(var b:int=0;b<4;b++){ 
  102.     var sound:Sound=new Sound(); 
  103.     var soundchannel:SoundChannel=new SoundChannel(); 
  104.     soundArray.push(sound); 
  105.     channelArray.push(soundchannel); 
  106.    } 
  107.    var xmlLoader:URLLoader=new URLLoader(); 
  108.    xmlLoader.addEventListener(Event.COMPLETE,xmlComplete); 
  109.    xmlLoader.load(new URLRequest("xml/data.xml")); 
  110.   } 
  111.    
  112.    
  113.   //xml数据加载完成函数 
  114.   private function xmlComplete(evt:Event):void { 
  115.    var _xml:XML=new XML(evt.target.data); 
  116.    trace(_xml); 
  117.    num=_xml.item.length(); 
  118.     
  119.    for(var i:uint=0;i<num;i++){ 
  120.     var soundurl:String=_xml.item[i].@url;//音乐路径 
  121.     trace(soundurl); 
  122.     songListArray[i].text=soundurl.substring(6); 
  123.     //加载音乐 
  124.     soundArray[i].load(new URLRequest(soundurl)); 
  125.      
  126.     soundArray[i].addEventListener(Event.COMPLETE,soundComplete); 
  127.    } 
  128.   } 
  129.    
  130.   //CuPlayer.com注册侦听 
  131.   private function soundComplete(evt:Event):void{ 
  132.    trace("加载完成,请欣赏!.."); 
  133.    buttonArray[0].addEventListener(MouseEvent.CLICK,onPlay); 
  134.    buttonArray[1].addEventListener(MouseEvent.CLICK,onPause); 
  135.    buttonArray[2].addEventListener(MouseEvent.CLICK,onStop); 
  136.    buttonArray[3].addEventListener(MouseEvent.CLICK,onPre); 
  137.    buttonArray[4].addEventListener(MouseEvent.CLICK,onNext);  
  138.    addEventListener(Event.ENTER_FRAME,onLoad); 
  139.   } 
  140.    
  141.   //播放 
  142.   private function onPlay(evt:MouseEvent):void{ 
  143.    trace("正在播放索引为"+currentIndex+"的歌曲"); 
  144.    currentPlay.text="正在播放: "+songListArray[currentIndex].text; 
  145.    songListArray[currentIndex].textColor=0x00ff00
  146.    channelArray[currentIndex]=soundArray[currentIndex].play(pausePosition);    
  147.     
  148.   } 
  149.   //CuPlayer.com暂停 
  150.   private function onPause(evt:MouseEvent):void{ 
  151.    pausePosition=channelArray[currentIndex].position; 
  152.    channelArray[currentIndex].stop(); 
  153.    trace("索引为"+currentIndex+"的歌曲暂停播放"); 
  154.   } 
  155.   //CuPlayer.com停止 
  156.   private function onStop(evt:MouseEvent):void{ 
  157.    channelArray[currentIndex].stop(); 
  158.    pausePosition=0
  159.    trace("索引为"+currentIndex+"的歌曲停止播放"); 
  160.   } 
  161.   //CuPlayer.com上一曲 
  162.   private function onPre(evt:MouseEvent):void{ 
  163.    channelArray[currentIndex].stop();//停止现在歌曲的播放 
  164.    songListArray[currentIndex].textColor=0xff0000
  165.    currentIndex--; 
  166.    if(currentIndex>=0){ 
  167.     channelArray[currentIndex]=soundArray[currentIndex].play();//播放下一曲 
  168.    trace("您操作了上一曲,现在播放索引为"+currentIndex+"的歌曲"); 
  169.    }else{ 
  170.     currentIndex=3
  171.     channelArray[currentIndex]=soundArray[currentIndex].play(); 
  172.     trace("您操作了上一曲,现在播放索引为"+currentIndex+"的歌曲"); 
  173.    } 
  174.    currentPlay.text="正在播放:"+songListArray[currentIndex].text; 
  175.    songListArray[currentIndex].textColor=0x00ff00
  176.   } 
  177.   //CuPlayer.com下一曲 
  178.   private function onNext(evt:MouseEvent):void{ 
  179.    channelArray[currentIndex].stop(); 
  180.    songListArray[currentIndex].textColor=0xff0000
  181.    currentIndex++; 
  182.    if(currentIndex>3){ 
  183.     currentIndex=0
  184.     channelArray[currentIndex]=soundArray[currentIndex].play(); 
  185.     trace("您操作了下一曲,现在播放索引为"+currentIndex+"的歌曲"); 
  186.    }else{ 
  187.     channelArray[currentIndex]=soundArray[currentIndex].play(); 
  188.     trace("CuPlayer.com您操作了下一曲,现在播放索引为"+currentIndex+"的歌曲"); 
  189.    } 
  190.    currentPlay.text="正在播放:"+songListArray[currentIndex].text; 
  191.    songListArray[currentIndex].textColor=0x00ff00
  192.   } 
  193.    
  194.   private function onLoad(evt:Event):void{ 
  195.    var currentPlayPercent:Number=channelArray[currentIndex].position/soundArray[currentIndex].length; 
  196.    loadtxt.text="CuPlayer.com播放进度:"+Math.round(currentPlayPercent*100)+"%"; 
  197.    loadrect.x=50+currentPlayPercent*frame.width; 
  198.   } 
  199.   //CuPlayer.com绘制按钮 
  200.   private function getButton():Sprite 
  201.   { 
  202.    var button:Sprite=new Sprite(); 
  203.    button.graphics.beginFill(0x990000); 
  204.    button.graphics.drawRect(0,0,50,20); 
  205.    button.graphics.endFill(); 
  206.    return button; 
  207.   } 
  208.   //CuPlayer.com绘制矩形条 
  209.   private function getLoad(width:int,height:int,color:uint):Sprite{ 
  210.    var rect:Sprite=new Sprite(); 
  211.    rect.graphics.beginFill(color); 
  212.    rect.graphics.drawRect(0,0,width,height); 
  213.    rect.graphics.endFill(); 
  214.    return rect; 
  215.   } 

XML文件

  1. <?xml version="1.0" ?> 
  2. <song> 
  3. <item url="sound/不开心与没烦恼.mp3" /> 
  4. <item url="sound/爱的翅膀.mp3" /> 
  5. <item url="sound/贝多芬的悲伤.mp3" /> 
  6. <item url="sound/心愿.mp3" /> 
  7. </song> 

 

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器