MP3音乐播放器 - AS3,XML和ListBoxes

时间:2014-04-03 20:01:30

标签: xml actionscript-3 listbox mp3 audio-player

我已经通过各种网站编写了不同的代码,介绍如何为我的网站创建自己的MP3播放器。按钮工作得很好。滑块,可视化器和定时器都运行良好。

我只想要列表框,以便直接从XML文件(playlist.xml)中提取数据。我想我可能会使用一个类似于播放按钮的功能,但是要使每个新的.addItem都是我在xml中所拥有的。

以下是xml和列表框的代码:

XML ::

    var mySongList:XMLList;    
    var myTotal:Number;    
    var s:Sound;    

var c:SoundChannel;    
var currentSong:Number=0;    
var lastPosition:Number=0;    
var dragging:Boolean=false;    
var boundingBox:Rectangle=new Rectangle(0,0,175,0); 
var pos:int = 0;

var myXMLLoader:URLLoader = new URLLoader();    
myXMLLoader.load(new URLRequest("/Music_Test/playlist.xml"));    
myXMLLoader.addEventListener(Event.COMPLETE, processXML);  


function processXML(e:Event):void { 
    var myXML:XML=new XML(e.target.data); 
    mySongList=myXML.song; 
    myTotal=mySongList.length(); 
    myXMLLoader.removeEventListener(Event.COMPLETE, processXML); 
    myXMLLoader=null; 
    playSong(0); 
}    

function playSong(mySong:Number):void { 
    var myTitle=mySongList[mySong].@songName; 
    var myArtist=mySongList[mySong].@artist; 
    var myURL=mySongList[mySong].@url; 
    //displays the song title and artis in the text fields
    title_txt.text=myTitle; 
    artist_txt.text=myArtist; 

    if (c) { 
        c.stop(); 
        c=null; 
    }

    s = new Sound(); 
    s.load(new URLRequest(myURL)); 
    c=s.play(lastPosition); 
    c.addEventListener(Event.SOUND_COMPLETE, nextSong); 
    visTimer.start();
    c.stop();
}  

以下是列表框的代码:

listbox.addItem({label:"Song1"});
listbox.addItem({label:"Song2"});

listbox.addEventListener (MouseEvent.CLICK, playList);

function playList(e:MouseEvent):void { 
    c.stop();
    c = s.play(0);
    tB3();
    txtTotalTime.text = timeCalculation(s.length);
    txtCurrentTime.text = timeCalculation (c.position);
    myTimer.start();
    seekSlider.minimum = 0;
    seekSlider.maximum = Math.floor(s.length);
    Volume();

}    

我还有其他代码用于其他功能,例如seekSliders,歌曲定时器和音量。

有人可以向我解释如何从playlist.xml中提取信息,以便直接发送到列表框吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

像这样放置你的xml格式

<song>
     <songtitle>Some title here</songtitle>
     <url> song name or url</url>
     <songtime> can add more data like above under each song</songtime>//example
</song> //copy above and add info for each song and save it as xml


var i:unit;
var songurl:URLRequest;

加载xml文件:

var myXML:XML = new XML();
var XML_URL:String = "link to your xml file here";
var myXMLURL:URLRequest = new URLRequest (XML_URL);
myLoader:URLLoader = new URLLoader (myXMLURL);
myLoader.addEventListener(event.COMPELETE, xmlLoaded);

现在你必须将它们列入你的名单

function xmlLoaded(event:Event):void{
myXML= XML(myLoader.data);
var firstsong:String = myXML..song.songtitle[0];
var firsturl:String = myXML..song.url[0];
songURL = new URLRequest(firsturl);

 for each (var song:XML in myXML..song){
 i++;
 var songtitle:String = song.songtitle.toString();
 var songtime:String = song.songtime.toString();
 var songurl:String = song.url.toString();
 list.addItem({label:i+". "+songtitle"-"+songtime, urlstring: songurl});
 }

现在你只需要加载歌曲网址并播放它并制作一个功能,这样当你点击每个项目时它会更改urlstring并加载,并播放它。

你可以在xml文件中加入歌曲信息,然后将它们加载到你的列表中。