以错误顺序调用的函数或之前的调用未成功(在第二次加载声音时)

时间:2014-01-14 16:28:20

标签: actionscript-3

错误#2037:以错误顺序调用的函数或早先的调用未成功

当我第二次或第三次调用playThatSound()函数时,我得到上述错误..等等。 (不是第一次)

我正在使用Flex SDK,使用FDT编辑器

代码:

var sound_Snd:Sound = new Sound() //definition inside the class

function playThatSound():void 
{   
sound_Snd.load( new URLRequest( <pathvalue>)) ;
sound_Snd.play(); 
}

但是我通过重新定义sound_Snd来消除这个错误,如下所示:

function playThatSound():void 
{
sound_Snd = new Sound(); //redefined everytime when function is called 
sound_Snd.load( new URLRequest( <pathvalue>)) ;
sound_Snd.play(); 
}

但是,我需要知道,以防万一我不想在每个函数调用中一次又一次地重新定义它。当使用Sound类的加载和播放功能时,是否有我遗漏的东西。

1 个答案:

答案 0 :(得分:3)

Sound.load()的文档说明了这一点:

  

在Sound对象上调用load()后,您无法再加载不同的声音       将文件放入该Sound对象。要加载其他声音文件,请创建一个新声音       对象

它还说:

  

如果您向Sound构造函数提供有效的URLRequest对象,则       构造函数为您调用Sound.load()。你只需要调用Sound.load()       如果您没有将有效的URLRequest对象传递给Sound构造函数或者       你传递一个空值。

因此,如果您明确致电load()或向URLRequest构造函数提供有效的Sound,无论哪种方式,您都会随时创建新的Sound对象你想改变网址。

此外,我能够使用两次使用相同的URL生成此内容,并且我能够通过创建新的Sound对象或者不尝试重新加载URL来修复它,所以显然它没有'无论URL是相同还是不同。无论是否使用相同的URLRequest对象,我都会崩溃,因此您必须创建新的Sound对象,或者不要调用load()