【问题标题】:AS3 - I'm trying to play the sound file through XML playlist but it doesn't seem to be workingAS3 - 我正在尝试通过 XML 播放列表播放声音文件,但它似乎不起作用
【发布时间】:2014-06-15 08:58:30
【问题描述】:

我正在尝试通过 XML 播放列表播放声音文件,但它似乎不起作用。
我得到这个:错误#2044:未处理的IOErrorEvent:。文本=错误 #2032:流错误。知道为什么吗?非常感谢帮助。

var soundURL:URLRequest;
var mySound:Sound = new Sound (); 
var mySoundChannel:SoundChannel = new SoundChannel();
var playing:Boolean = true;
var resumeTime:Number = 0;
var myCurrentSong:Number = 0;
var currentSong:int = 0;
var loadedXML:XML

var myXMLLoader:URLLoader = new URLLoader();
var myURL:URLRequest = new URLRequest("playList.xml");
myXMLLoader.load(myURL);

myXMLLoader.addEventListener(Event.COMPLETE, processXML);
function processXML(e:Event):void {
loadedXML = XML(e.target.data);
soundURL = new URLRequest(loadedXML.songFile[currentSong].@songURL); 
mySound = new Sound(soundURL);
}

btnPlayPause.buttonMode = true;
btnStop.buttonMode = true;
btnNext.buttonMode = true;

btnPlayPause.addEventListener(MouseEvent.CLICK, playSound);
btnStop.addEventListener(MouseEvent.CLICK, stopSound);

function playSound(m:MouseEvent){
if (playing==true)
{
btnPlayPause.gotoAndStop("lbPause");
mySound.load(myURL);
mySoundChannel = mySound.play(resumeTime);
playing = false;
}
else
{
btnPlayPause.gotoAndStop("lbPlay");
resumeTime = mySoundChannel.position;
mySoundChannel.stop();
playing = true;
  }
}

function stopSound(f:MouseEvent):void
{
mySoundChannel.stop();
}

【问题讨论】:

  • 嗯,通过错误很明显,有一个流错误,这意味着文件无法加载。追踪 url 看看发生了什么。
  • 将问题分解为:加载数据、解析数据(正确)、使用数据(播放声音)。你被困在其中,IOErrorEvent 有点像浏览器中的 404 错误,flash player 在你给它的路径中找不到 xml。确保 playlist.xml 与 .swf 文件位于同一文件夹中,然后重试。
  • xml 文件与我的 .swf 文件位于同一文件夹中。我也彻底检查了拼写,甚至没有错字。
  • 那么在加载XML或者加载声音文件的时候会出现这个错误?
  • 是的,当我尝试播放声音文件时。

标签: xml actionscript-3 audio


【解决方案1】:

您很接近,但在设置您的跟踪 URL 时出现了一点问题..

如果您的 XML 文件看起来像这样

< ?xml version="1.0" encoding="UTF-8"?>

<MP3s>

    <songFile>


        <songURL> Apakalypse_Exist.mp3 </songURL>   


    </songFile>

</MP3s>

那么代码应该可以工作。查看function processXML的最后一行

var soundURL:URLRequest;
var mySound:Sound = new Sound (); 
var mySoundChannel:SoundChannel = new SoundChannel();
var playing:Boolean = true;
var resumeTime:Number = 0;
var myCurrentSong:Number = 0;
var currentSong:int = 0;
var loadedXML:XML;

var myXMLLoader:URLLoader = new URLLoader();
var myURL:URLRequest = new URLRequest("playList.xml");

////Setup... 
btnPlayPause.buttonMode = true;
btnStop.buttonMode = true;
btnNext.buttonMode = true;

btnPlayPause.addEventListener(MouseEvent.CLICK, playSound);
btnStop.addEventListener(MouseEvent.CLICK, stopSound);

myXMLLoader.load (myURL);
myXMLLoader.addEventListener(Event.COMPLETE, processXML);


//// Functions...
function processXML (e:Event):void 
{
    loadedXML = XML(e.target.data);
    //trace("loaded XML" + loadedXML); //for test only

    //soundURL = new URLRequest(loadedXML.songFile[currentSong].@songURL); 
    //mySound = new Sound(soundURL);

    mySound = new Sound(new URLRequest(loadedXML.songFile[currentSong].songURL));
}

function playSound (m:MouseEvent)
{
    if (playing==true)
    {
        btnPlayPause.gotoAndStop("lbPause");
        //mySound.load(myURL);
        mySoundChannel = mySound.play(resumeTime);
        playing = false;
    }
    else
    {
        btnPlayPause.gotoAndStop("lbPlay");
        resumeTime = mySoundChannel.position;
        mySoundChannel.stop();
        playing = true;
    }
}

function stopSound (f:MouseEvent):void
{
    mySoundChannel.stop();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-19
    相关资源
    最近更新 更多