0

在创建 AS3 项目并添加音频时,我通常做的是拖动我想要使用的音频(例如,对于游戏菜单),当我想停止输入音频时

SoundMixer.stopAll();

我这样做是因为如果我说转到此菜单中的关于游戏框架,那么我将获得音频,但如果我回到我最初拥有音乐的主框架,它会加倍以及两个不同的音乐时间正在同时播放。如何在更改帧时停止播放而不必禁用音频?

4

1 回答 1

0

在这些情况下,直接通过代码启动和停止声音会更容易。首先,右键单击库面板中的声音剪辑,然后选择属性。在 ActionScript 选项卡中,选中“Export for ActionScript”,并为其命名,例如 Music。然后,要播放和停止此剪辑,您可以使用以下代码:

import flash.media.Sound;
// create the music Sound object so that we can start playing
var music : Sound = new Music();
var musicChannel : SoundChannel;

// play the music
// the play() method returns a SoundChannel,
// which you can later use to stop the music
// notice that we first check to make sure musicChannel is null
// if it isn't null, music is already playing, so don't play it twice
if(musicChannel != null) musicChannel = music.play();

// when you switch screens, stop the music
// clear out the channel, so that we know that it is safe to start the music again
musicChannel.stop();
musicChannel = null;

或者,如果您通过将音乐和声音放在时间线上来播放它们,您可以使用帧的同步设置来停止它。在时间线上,创建一个关键帧,您可以在其中切换屏幕并希望音乐停止播放。选择该帧,然后将要停止的声音剪辑拖到该帧上。在“属性”面板中,将“同步”选项更改为“停止”。这将导致只有选定的声音停止播放。

还有一种方法是创建一个空的 MovieClip,其中放置了声音。将同步设置更改为流,并用空帧填充剪辑,以便播放整个剪辑。然后,如果您将此剪辑放在主菜单屏幕上,则它将仅在主菜单期间播放。只要 MovieClip 存在并且正在播放,流声音只会播放声音。将此与正常的事件声音进行比较,无论如何都会播放整个声音。

后一种方法更老派和以电影为中心。如果您正在编写游戏,则更适合使用前一种方法来更好地控制代码中的音频。

于 2013-03-22T00:59:59.220 回答