如何使用xml文件和AS3向flash播放器添加图像、歌曲和艺术家姓名?

如何使用xml文件和AS3向flash播放器添加图像、歌曲和艺术家姓名?,xml,actionscript-3,flash,Xml,Actionscript 3,Flash,您好,我需要在我的flash文件上显示一个图像,这是一个音乐播放器,以便我可以放置一个音乐记分表。播放器从xml文件中获取歌曲,以下是我的actionscript代码: var my_songs:XMLList; var my_total:Number; var my_sound:Sound; var my_channel:SoundChannel; var current_song:Number = 0; var song_position:Number; var song_pause

您好,我需要在我的flash文件上显示一个图像,这是一个音乐播放器,以便我可以放置一个音乐记分表。播放器从xml文件中获取歌曲,以下是我的actionscript代码:

var my_songs:XMLList;
var my_total:Number;

var my_sound:Sound;
var my_channel:SoundChannel;


var current_song:Number = 0;

var song_position:Number;
var song_paused:Boolean;
var myXMLLoader:URLLoader = new URLLoader();
myXMLLoader.load(new URLRequest("playlist.xml"));
myXMLLoader.addEventListener(Event.COMPLETE, processXML);

function processXML(e:Event):void {
    var myXML:XML = new XML(e.target.data);

    my_songs = myXML.SONG;
    my_total = my_songs.length();

    //playSong(0);

    myXMLLoader.removeEventListener(Event.COMPLETE, processXML);
    myXMLLoader = null;

}

function playSong(mySong:Number):void {
    var myTitle = my_songs[mySong].@TITLE;
    var myArtist = my_songs[mySong].@ARTIST;
    var myURL = my_songs[mySong].@URL;
    var myImageURL = my_songs[mySong].@Score;
var url:URLRequest = new URLRequest(myImageURL);
var img:Loader = new Loader();

img.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded);
img.load(url);

function loaded(event:Event):void
{
    event.target.removeEventListener(Event.COMPLETE, loaded);

    var bitmap:Bitmap = event.target.content;
    addChild(bitmap);
}

    title_txt.text = myTitle;
    artist_txt.text = myArtist;

    if (my_channel) {
        my_channel.stop();
        my_channel.removeEventListener(Event.SOUND_COMPLETE, onNext);
    }

    my_sound = new Sound();
    my_sound.load(new URLRequest(myURL));
    my_channel = my_sound.play();
    my_channel.addEventListener(Event.SOUND_COMPLETE, onNext);
}

next_btn.addEventListener(MouseEvent.CLICK, onNext);
function onNext(e:Event):void {
    current_song++;
    if (current_song>=my_total) {
        current_song=0;
    }
    playSong(current_song);
}
prev_btn.addEventListener(MouseEvent.CLICK, onPrev);
function onPrev(e:MouseEvent):void {
    current_song--;
    if (current_song<0) {
        current_song = my_total-1;
    }
    playSong(current_song);
}

pause_btn.addEventListener(MouseEvent.CLICK, onPause);
function onPause(e:MouseEvent):void {
    if (my_channel) {
        song_position = my_channel.position;
        my_channel.stop();
        song_paused=true;
    }
}
play_btn.addEventListener(MouseEvent.CLICK, onPlay);
function onPlay(e:MouseEvent):void {
    if (song_paused) {
        my_channel = my_sound.play(song_position);
        song_paused=false;
    } else if (!my_channel) {
        playSong(current_song);
    }
}

menu_home.addEventListener(MouseEvent.CLICK, fl_ClickToGoToWebPage);

function fl_ClickToGoToWebPage(event:MouseEvent):void
{
    navigateToURL(new URLRequest("http://www.portugal.gov.pt"), "_blank");
}

fs_btn.addEventListener(MouseEvent.CLICK, fullScreen); 

function fullScreen(event:MouseEvent):void {
stage.displayState=StageDisplayState.FULL_SCREEN;
}

import fl.events.SliderEvent;
import flash.media.SoundTransform;

var voltransform:SoundTransform = new SoundTransform();
sc.addEventListener(SliderEvent.THUMB_DRAG,changevol);

function changevol(event:SliderEvent):void{

voltransform.volume=sc.value;
SoundMixer.soundTransform=voltransform;
}
xml如下所示:


如果您只需要加载图像,请添加以下代码:

var myImageURL = my_songs[mySong].@Score;
var url:URLRequest = new URLRequest(myImageURL);
var img:Loader = new Loader();

img.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded);
img.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
img.load(url);

function loaded(event:Event):void
{
    event.target.removeEventListener(Event.COMPLETE, loaded);

    var bitmap:Bitmap = event.target.content;

    // if "score" is MovieClip and you want to put loaded image there
    score.addChild(bitmap);
}

function ioErrorHandler(event:IOErrorEvent):void {
    trace("ioErrorHandler: " + event);
}

是的,我需要添加图像,因为歌曲名称和艺术家名称已经显示在answear的每个歌曲txs上。我需要在每首歌曲中显示不同的图像。你知道我该怎么做吗?你能将该代码放在playSong函数中吗?当歌曲开始时,它会加载图像。更新了帖子上的代码,但它不起作用,但确实缺少一些东西。我正在尝试将其加载到名为Score的时间线movieclip中。您是否已经创建了Score movieclip?如果是,将行更改为score.addChildbitmap;