我有点像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,这就是我得到的。
我也得到了同样的1009错误,在一些TweenMax的东西。是的,我导入了所有必需的文件,这些函数运行所需的所有文件都在.fla文件的根目录中。我之所以知道这一点,是因为,和另一个错误一样,这些东西在我家里的电脑上运行得很好。我正在运行完全相同的.fla文件和代码文件,我保存在我的计算机上,我确实有'com‘文件夹和'greenstock’swc文件在与我的.fla相同的目录中,就像在我的PC上一样,但我仍然看到1009与此有关:
import com.greensock.TweenLite;import com.greensock.TweenMax;TweenMax.to(musicChannel, 2, {volume:0});
再次,这一行是指一个声音频道,所以我99%肯定这是这些问题的根源。我可以在这段代码中用'musicChannel‘(在第一个帧中声明的声音与频道)交换'Music1’,它可以很好地停止音乐,但是每当我试图停止声音频道时,它就会向我发出声音。
再次抱歉,如果这真的是简单的修复,但我很困惑,因为它昨晚运行良好。Flash播放器可能已经过时,但它是11,所以我不知道这是否是问题所在。现在我在上大学,所以我不知道家里有什么版本。
耽误您时间,实在对不起。
发布于 2015-01-15 13:30:03
SoundCahnnel可以为null,当它们为null时,您不能尝试在它们的属性之间切换。处理这些问题的一个简单方法是检查它们是否为空:
if(musicChannel)
{
TweenMax.to(musicChannel, 2, {volume:0});
}另外,只有在调用声音对象play方法时才生成SoundChannel对象,因此不需要实例化它们:
var musicChannel:SoundChannel = new SoundChannel();//irrelevant piece of code
var musicChannel:SoundChannel;//correcthttps://stackoverflow.com/questions/27964383
复制相似问题