0

如果这是一个简单的问题或修复,我是一个 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 文件和代码文件,并且我的 .fla 目录中确实有 'com' 文件夹和 'greenstock' swc 文件,就像在我的 PC 上一样,但我我仍然看到 1009 :

import com.greensock.TweenLite;
import com.greensock.TweenMax;

TweenMax.to(musicChannel, 2, {volume:0});

这条线再次引用了一个声道,所以我 99% 确定它是这些问题的根源。我可以将这段代码中的“musicChannel”替换为“Music1”(在第一帧中声明的带有通道的声音),它可以很好地停止音乐,但是每当我尝试停止声音通道时,它都会对我产生影响。

再次抱歉,如果这真的很容易解决,但我很困惑,因为它昨晚工作正常。Flash Player 可能已经过时,但它是 Adob​​e Flash Player 11,所以我不知道这是否是问题所在。现在我在上大学,所以我不知道我家里有什么版本。

谢谢你的时间。

4

1 回答 1

-1

SoundCahnnel 可以为空,当它们为空时,您不能尝试对它们的属性进行补间。一个简单的处理方法是检查它们是否为空:

if(musicChannel)
{
    TweenMax.to(musicChannel, 2, {volume:0});
}

此外,仅当调用 Sound 对象播放方法时才会生成 SoundChannel 对象,因此无需实例化它们:

var musicChannel:SoundChannel = new SoundChannel();//irrelevant piece of code
var musicChannel:SoundChannel;//correct
于 2015-01-15T13:30:03.073 回答