首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MP3音乐播放器- AS3、XML和ListBoxes

MP3音乐播放器- AS3、XML和ListBoxes
EN

Stack Overflow用户
提问于 2014-04-04 04:01:30
回答 1查看 689关注 0票数 1

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

我只需要列表框,这样它就可以直接从XML文件(playlist.xml)中提取数据。我想我可能会使用一个类似于play按钮的函数,但是要有它,这样每个新的.addItem都是我的xml中的任何东西。

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

XML::

代码语言:javascript
复制
    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();
}  

下面是列表框的代码:

代码语言:javascript
复制
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中提取信息,以便它直接发送到列表框吗?

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2014-04-07 15:24:31

将您的xml格式设置为

代码语言:javascript
复制
<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文件:

代码语言:javascript
复制
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);

现在你必须把它们放到你的列表中

代码语言:javascript
复制
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文件中放入尽可能多的歌曲信息,并将它们加载到您的列表中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22847804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档