我有一个带有以下变量的 SoundHandler 类:
private static var musicChannel: SoundChannel;
private static var effectsChannel: SoundChannel;
private static var narrationChannel: SoundChannel;
private static var narrationMuted:Boolean;
在初始化函数中:
var classReference: Class = getDefinitionByName(narrationClassName) as Class;
var s: Sound = new classReference();
narrationChannel = s.play();
效果和音乐频道工作正常,但在调用 stop() 时旁白频道不会停止。这是功能:
public static function playNarration(narrationClassName: String): void {
if (!narrationMuted) {
narrationChannel.stop(); //NOT WORKING--THE SOUND KEEPS PLAYING!
var classReference: Class = getDefinitionByName(narrationClassName) as Class;
var s: Sound = new classReference();
narrationChannel = s.play();
}
}
SoundMixer.stopAll() 确实停止了旁白的声音,但我不能使用它,因为它也会停止音乐和效果的声音。
我怀疑 stop() 由于我创建 Sound 对象的方式不起作用,但我不确定。从外部加载并不能解决问题:
public static function playNarration(narrationClassName: String): void {
if (!narrationMuted) {
narrationChannel.stop();
var s: Sound = new Sound();
s.addEventListener(Event.COMPLETE, onNarrationSoundLoaded);
var req: URLRequest = new URLRequest("sounds/Narration/sub_narr_1.mp3");
s.load(req);
}
}
private static function onNarrationSoundLoaded(e: Event): void {
var localSound: Sound = e.target as Sound;
narrationChannel = localSound.play();
}
将旁白听起来作为静态变量也不起作用:
private static var subNarr1:Sound;
public static function playNarration(narrationClassName: String): void {
if (!narrationMuted) {
narrationChannel.stop();
narrationChannel = subNarr1.play();
}
}
任何帮助表示赞赏。谢谢!