【问题标题】:MP3 Music Player - AS3, XML and ListBoxesMP3 音乐播放器 - AS3、XML 和 ListBoxes
【发布时间】:2014-04-03 20:01:29
【问题描述】:

我已经通过各种网站编译了不同的代码,以了解如何为我的网站创建自己的 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();

}    

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

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

感谢您的帮助。

【问题讨论】:

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


    【解决方案1】:

    把你的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 文件中放尽可能多的歌曲信息,它应该将它们加载到你的列表中。

    【讨论】:

    • 您好,我尝试使用您输入的内容,但它只会产生更多错误。你能澄清一下list.additem的编码吗?我知道标签正是标记列表所需要的。如何从现有的 xml 中提取列表?我是否更改了 xmlLoader 以将其拉入 URLString?对不起,我对xml和AS3的某些方面不太熟悉
    • 嗨,我想这就是你需要的,这非常好/详细教程 youtube.com/watch?v=x7YRwFoZEt0
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多