一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

純AS3.0代碼寫的一個簡易音樂播放器

 王咸美 2013-12-24
純AS3.0代碼寫的一個簡易音樂播放器
       剛學(xué)AS不久,花了一天做的播放器,不足之處,望大師們指點!代碼可能有些亂,和我一樣的新手耐心點看哦!(在sound文件夾里面放四首歌,名字改對,就可以運行了)!

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

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>
復(fù)制代碼

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    色婷婷日本视频在线观看| 欧美日韩精品久久亚洲区熟妇人 | 亚洲精品国男人在线视频| 在线中文字幕亚洲欧美一区| 国产精品偷拍一区二区| 大香蕉伊人一区二区三区| 亚洲国产欧美精品久久| 国产女优视频一区二区| 欧美不卡高清一区二区三区| 又黄又硬又爽又色的视频| 老司机精品在线你懂的| 久久精品a毛片看国产成人| 夫妻激情视频一区二区三区| 日韩一区中文免费视频| 美女被草的视频在线观看| 老司机精品线观看86| 99精品国产一区二区青青| 国产成人亚洲精品青草天美| 老司机精品视频在线免费| 国产又色又爽又黄又大| 欧美综合色婷婷欧美激情| 高清免费在线不卡视频| 四十女人口红哪个色好看| av国产熟妇露脸在线观看| 日韩精品福利在线观看| 99精品国产自在现线观看| 国产不卡免费高清视频| 精品人妻一区二区三区免费看| 国产对白老熟女正在播放| 大香伊蕉欧美一区二区三区| 欧美日韩有码一二三区| 国产在线视频好看不卡| 精品老司机视频在线观看| 99少妇偷拍视频在线| 草草视频福利在线观看| 99久久精品免费精品国产| 美女被啪的视频在线观看| 欧美乱视频一区二区三区 | 欧美自拍系列精品在线| 中国一区二区三区人妻 | 不卡视频在线一区二区三区|