如何使用xml文件和AS3将图像,歌曲和艺术家名称添加到Flash播放器?
问题描述:
你好,我需要在我的flash文件上显示一个图像,这是一个音乐播放器,以便我可以放置音乐计分表。玩家从一个XML文件中获取歌曲,这里是我的ActionScript代码:如何使用xml文件和AS3将图像,歌曲和艺术家名称添加到Flash播放器?
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][email protected];
var myArtist = my_songs[mySong][email protected];
var myURL = my_songs[mySong][email protected];
var myImageURL = my_songs[mySong][email protected];
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][email protected];
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);
}
是的,我需要添加图像,因为儿子g名字和艺术家名字已经在每首歌曲上显示txs for answear艰难我需要每首歌曲中的不同图像你知道我该怎么做? – 2015-04-07 01:29:40
你可以把你的playSong函数中的代码?当歌曲开始时它会加载图像。 – Nemi 2015-04-07 09:21:53
更新了帖子上的代码强硬它does not工作,但肯定缺少的东西 – 2015-04-07 16:57:08