我正在尝试为我的游戏制作一个选项菜单,其中有2个设置。一个设置禁用游戏中的所有音乐,另一个设置禁用所有音效。如果用户选择禁用所有声音效果而不是音乐,那么当他退出游戏并返回游戏时,它应该记住他的设置。我已经多次尝试创建这种系统,但它根本不适用于我。我不知道如何创建它。有人可以帮忙吗?我在动作脚本上相当新。
从库中访问所有声音
答案 0 :(得分:0)
使用SoundChannel创建和控制单独的声音。 使用SharedObject来存储用户选择。
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/SoundChannel.html http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/SharedObject.html
答案 1 :(得分:0)
答案是使用声音管理器类的静态功能,它将具有两个公共布尔属性,然后您可以使用选项菜单单独设置。然后,每次你想要播放声音时,班级都会检查这些布尔值(为此,使用它的功能来播放声音)。一个例子:
public class SoundManager {
private var _musicOn:Boolean;
private var _soundOn:Boolean;
private var _currentMusicChannel:SoundChannel;
private var _currentMusicSelected:Sound; // what to start when music is enabled
public static function get musicOn():Boolean { return _musicOn; }
public static function set musicOn(value:Boolean):void {
if (value==_musicOn) return;
_musicOn=value;
if (_musicOn) _currentMusicChannel=_currentMusicSelected.play();
else if (_currentMusicChannel) {
_currentMusicChannel.stop();
_currentMusicChannel=null;
}
}
public static function get soundOn():Boolean { return _soundOn; }
public static function set soundOn(value:Boolean):void { _soundOn=value; }
// a simple version, as this is an example
public static function playSound(someSound:String):void {
var aSound:Sound=getSoundFromString(someSound); // TODO
// ^ you have to devise a method to convert strings to sounds
if (isMusic(aSound)) {
// TODO, you should have either one music or a set of em, so if you're
// trying to play a music, this should return true, otherwise false
_currentMusicSelected=aSound;
if (_musicOn) _currentMusicChannel=aSound.play();
} else {
// a simpler version, the more advanced version should allow instant mute
if (_soundOn) aSound.play();
}
}
// some other functions are missing from here, as well as sound library and support stuff
}