Flash AS3 - SoundChannel 错误 #1009
Flash AS3 - SoundChannel error #1009
我是一个 Flash 新手,如果这是一个简单的问题或修复,我深表歉意。
无论如何,我在某些功能上遇到了问题。我注意到我只在尝试停止声音通道的函数上收到错误 1009。这是一些代码:
这是第一个场景的第一帧,只是设置我的频道。我所有的声音也是在这里完成的,但我认为这些不是问题。
import flash.media.Sound;
import flash.media.SoundChannel;
var musicChannel:SoundChannel = new SoundChannel();
var speechChannel:SoundChannel = new SoundChannel();
var sfxChannel:SoundChannel = new SoundChannel();
下面是导致 1009 错误的按钮之一的示例:
function goHome(e:MouseEvent):void {
speechChannel.stop();
sfxChannel.stop();
musicChannel.stop();
gotoAndPlay(2, "TitleScreen")
}
home.addEventListener(MouseEvent.CLICK, goHome);
现在真正让我困惑的是,同样的代码 运行 昨晚在我的电脑上完美运行。我去我大学的计算机上测试我的 .swf,我的动画冻结了,所以我检查了 Flash,这就是我得到的。
我在使用 TweenMax 时也遇到了同样的 1009 错误。是的,我确实导入了所有必要的东西,这些功能所需的所有文件 运行 都在 .fla 文件的根目录中。我知道这是因为,与其他错误一样,这些东西在我家里的电脑上运行得很好。我正在 运行 保存我在计算机上保存的完全相同的 .fla 文件和代码文件,并且 'com' 文件夹和 'greenstock' swc 文件与我的 .fla 在同一目录中,就像在我的电脑上一样,但我仍然看到 1009:
import com.greensock.TweenLite;
import com.greensock.TweenMax;
TweenMax.to(musicChannel, 2, {volume:0});
同样,这条线引用了一个声道,所以我 99% 确定这是这些问题的根源。我可以将这段代码中的 'musicChannel' 换成 'Music1' (在第一帧中用通道声明的声音)并且它可以很好地停止音乐,但是每当我尝试停止声音通道时它就会崩溃在我身上。
再次抱歉,如果这真的很容易修复,但我很困惑,因为它昨晚工作正常。 Flash Player 可能已过时,但它是 Adobe Flash Player 11,所以我不知道这是否是问题所在。现在我在上大学,所以我不知道家里有什么版本。
感谢您的宝贵时间。
SoundCahnnel 可以为 null,当它们为 null 时,您不能尝试补间它们的 属性。一个简单的处理方法是检查它们是否为空:
if(musicChannel)
{
TweenMax.to(musicChannel, 2, {volume:0});
}
另外,SoundChannel 对象仅在调用 Sound 对象播放方法时生成,因此无需实例化它们:
var musicChannel:SoundChannel = new SoundChannel();//irrelevant piece of code
var musicChannel:SoundChannel;//correct
我是一个 Flash 新手,如果这是一个简单的问题或修复,我深表歉意。 无论如何,我在某些功能上遇到了问题。我注意到我只在尝试停止声音通道的函数上收到错误 1009。这是一些代码:
这是第一个场景的第一帧,只是设置我的频道。我所有的声音也是在这里完成的,但我认为这些不是问题。
import flash.media.Sound;
import flash.media.SoundChannel;
var musicChannel:SoundChannel = new SoundChannel();
var speechChannel:SoundChannel = new SoundChannel();
var sfxChannel:SoundChannel = new SoundChannel();
下面是导致 1009 错误的按钮之一的示例:
function goHome(e:MouseEvent):void {
speechChannel.stop();
sfxChannel.stop();
musicChannel.stop();
gotoAndPlay(2, "TitleScreen")
}
home.addEventListener(MouseEvent.CLICK, goHome);
现在真正让我困惑的是,同样的代码 运行 昨晚在我的电脑上完美运行。我去我大学的计算机上测试我的 .swf,我的动画冻结了,所以我检查了 Flash,这就是我得到的。
我在使用 TweenMax 时也遇到了同样的 1009 错误。是的,我确实导入了所有必要的东西,这些功能所需的所有文件 运行 都在 .fla 文件的根目录中。我知道这是因为,与其他错误一样,这些东西在我家里的电脑上运行得很好。我正在 运行 保存我在计算机上保存的完全相同的 .fla 文件和代码文件,并且 'com' 文件夹和 'greenstock' swc 文件与我的 .fla 在同一目录中,就像在我的电脑上一样,但我仍然看到 1009:
import com.greensock.TweenLite;
import com.greensock.TweenMax;
TweenMax.to(musicChannel, 2, {volume:0});
同样,这条线引用了一个声道,所以我 99% 确定这是这些问题的根源。我可以将这段代码中的 'musicChannel' 换成 'Music1' (在第一帧中用通道声明的声音)并且它可以很好地停止音乐,但是每当我尝试停止声音通道时它就会崩溃在我身上。
再次抱歉,如果这真的很容易修复,但我很困惑,因为它昨晚工作正常。 Flash Player 可能已过时,但它是 Adobe Flash Player 11,所以我不知道这是否是问题所在。现在我在上大学,所以我不知道家里有什么版本。
感谢您的宝贵时间。
SoundCahnnel 可以为 null,当它们为 null 时,您不能尝试补间它们的 属性。一个简单的处理方法是检查它们是否为空:
if(musicChannel)
{
TweenMax.to(musicChannel, 2, {volume:0});
}
另外,SoundChannel 对象仅在调用 Sound 对象播放方法时生成,因此无需实例化它们:
var musicChannel:SoundChannel = new SoundChannel();//irrelevant piece of code
var musicChannel:SoundChannel;//correct