我已经通过不同的网站编写了不同的代码,教你如何为我的网站创建自己的MP3播放器。按钮工作得很好。滑块、可视化工具和定时器都工作得很好。
我只需要列表框,这样它就可以直接从XML文件(playlist.xml)中提取数据。我想我可能会使用一个类似于play按钮的函数,但是要有它,这样每个新的.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中提取信息,以便它直接发送到列表框吗?
谢谢你的帮助。
发布于 2014-04-07 15:24:31
将您的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});
}现在,您只需加载歌曲url并播放它,然后创建一个函数,这样当您单击每个项目时,它就会更改urlstring并加载并播放它。
您可以在您的xml文件中放入尽可能多的歌曲信息,并将它们加载到您的列表中。
https://stackoverflow.com/questions/22847804
复制相似问题