我已经通过各种网站编写了不同的代码,介绍如何为我的网站创建自己的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中提取信息,以便直接发送到列表框吗?
感谢您的帮助。
答案 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文件中加入歌曲信息,然后将它们加载到你的列表中。