这是一整个完整的类,仅供学习使用!希望大家不要追溯版权问题,这个类使用了一个常量类来完成功能,常量类我就不放出了,相信看懂了,应该可以自己写出来。public class SoundManager { /** * 默认声音大小 */ public var defaultVolume:Number=1.0; private var activeSound:Dictionary; private var _soundOn:Boolean=true;//是否关闭声音,游戏音效 private var _bgSoundOn:Boolean=true;//是否关闭背景音乐 private static var _instance:SoundManager=null; public function SoundManager() { activeSound = new Dictionary(); } /** * 设置全局声音的大小 * @param volume 声音音量 * */ public function setGlobalVolume(volume:Number):void { SoundMixer.soundTransform = new SoundTransform(volume); } /** * 设置声音的大小 * * @param name 名称 * @param volume 声音 */ public function setVolume(name:String, volume:Number):void { var sc:SoundChannel = getActiveChannel(name); if (sc) sc.soundTransform = new SoundTransform(volume); } /** *取声音通道 * @param name * @return * */ public function getActiveChannel(name:String):SoundChannel { return activeSound[name]; } /** * 设置声音位置 * * @param name 名称 * @param pan 声音位置,范围由-1到1 */ public function setPan(name:String, pan:Number):void { var sc:SoundChannel = getActiveChannel(name); if (sc) { sc.soundTransform = new SoundTransform(sc.soundTransform.volume,pan); } } /** * 声音是否正在播放 * * @param name 名称 * */ public function isPlaying(name:String):Boolean { return activeSound[name]!=null; } /** * 停止播放 * * @param name 名称 */ public function stop(name:String):void { var sc:SoundChannel = activeSound[name]; delete activeSound[name]; if (sc) { sc.stop(); } } /** * 停止播放所有正在播放的音乐 * */ public function stopAll():void { SoundMixer.stopAll(); } /** * 播放 * * @param name 名称 * @param loop 循环次数,-1为无限循环 * @param volume 声音 */ public function play(name:String,startTime:Number=0, loop:int=1, volume:Number=-1,panning:Number=0):void { try { var ref:Class; if(ApplicationDomain.currentDomain.hasDefinition(name)) ref = ApplicationDomain.currentDomain.getDefinition(name) as Class; else return; var _sound:Sound=new ref() as Sound; var channel:SoundChannel = _sound.play(startTime, (loop != -1)?loop:int.MAX_VALUE); if (channel) { if (loop != 0 && loop != -1) channel.addEventListener(Event.SOUND_COMPLETE, soundCompleteListener); activeSound[name] = channel; channel.soundTransform = new SoundTransform((volume != -1) ? volume : defaultVolume,panning); if(!_soundOn&&name!=SoundsConst.BATTLE_SOUND&&name!=SoundsConst.BG1_SOUND)//游戏音效关闭 { channel.soundTransform = new SoundTransform(0); } if(!_bgSoundOn&&(name==SoundsConst.BATTLE_SOUND||name==SoundsConst.BG1_SOUND))//背景音乐关闭 { channel.soundTransform = new SoundTransform(0); } } } catch(e:Error) { } } private function soundCompleteListener(evt:Event):void { evt.currentTarget.removeEventListener(Event.SOUND_COMPLETE, soundCompleteListener); for (var key:* in activeSound) { if (activeSound[key] == evt.currentTarget) { delete activeSound[key]; return; } } } /** *取SoundManager对象 * @return * */ public static function getInstance():SoundManager { if(_instance==null) _instance=new SoundManager(); return _instance; } /** *是否关闭音乐 * @return * */ public function get soundOn():Boolean { return _soundOn; } /** * 是否关闭游戏音效 * @param value * */ public function set soundOn(value:Boolean):void { if(_soundOn!=value) { _soundOn = value; for (var key:* in activeSound) { if (key != SoundsConst.BG1_SOUND&&key != SoundsConst.BATTLE_SOUND) { var _sc:SoundChannel=activeSound[key]; if (_sc) { if(!_soundOn) _sc.soundTransform = new SoundTransform(0); else _sc.soundTransform = new SoundTransform(1); } } } } } /** *是否关闭背景音乐 * @return * */ public function get bgSoundOn():Boolean { return _bgSoundOn; } /** * 是否关闭背景音乐 * @param value * */ public function set bgSoundOn(value:Boolean):void { if(_bgSoundOn!=value) { _bgSoundOn = value; if(!_bgSoundOn) { setVolume(SoundsConst.BG1_SOUND,0); setVolume(SoundsConst.BATTLE_SOUND,0); } else { setVolume(SoundsConst.BG1_SOUND,1); setVolume(SoundsConst.BATTLE_SOUND,1); } } }
您还没有登录,请您登录后再发表评论
flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助...
flex中文帮助文档flex中文帮助文档
flex 后台管理系统 ssh flex 后台管理系统 ssh flex 后台管理系统 ssh
Flex学习文档,Flex中文文档,,记载了各种学习心得
Flex 会议管理系统Flex 会议管理系统Flex 会议管理系统Flex 会议管理系统
本文所有资料均来自Flex官方文档,其英文版权归 Adobe公司所有。 均有实例代码讲解
1、介绍flex的用法、配置、语法等 2、flex的使用文档说明
flex文档 ActonScript3.0 flex4各类电子书
Flex中文帮助文档,共分为5部分,详细的讲解了flex的基础知识,是初级用户的很好的选择,让你更了解什么是flex,如何运用flex。
FLEX4.0开发文档,集成myeclipse开发工具。文档介绍了开发流程
flex4API文档 flex3的文档在Adobe网上就可,可是4的一直没找着. 这个Flex4API文档,是根据flex4 SDK生产的,非常权威
flex3的详细帮助文档,对于FLEX开发有很大的帮助
FLEX API。官方最新文档,方便开发者参考开发。内容丰富
Adobe® Flex® Software Development Kit (SDK) includes the Flex framework (component class library) and Flex compiler, enabling you to freely develop and deploy Flex applications using an IDE of your ...
Flex 文件上传的文件代码 交你一步一步的完成上传功能
Flex中文帮助文档,Flex中文帮助文档,Flex中文帮助文档,Flex中文帮助文档,Flex中文帮助文档。
相关推荐
flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助...
flex中文帮助文档flex中文帮助文档
flex 后台管理系统 ssh flex 后台管理系统 ssh flex 后台管理系统 ssh
Flex学习文档,Flex中文文档,,记载了各种学习心得
Flex 会议管理系统Flex 会议管理系统Flex 会议管理系统Flex 会议管理系统
本文所有资料均来自Flex官方文档,其英文版权归 Adobe公司所有。 均有实例代码讲解
1、介绍flex的用法、配置、语法等 2、flex的使用文档说明
flex文档 ActonScript3.0 flex4各类电子书
Flex中文帮助文档,共分为5部分,详细的讲解了flex的基础知识,是初级用户的很好的选择,让你更了解什么是flex,如何运用flex。
FLEX4.0开发文档,集成myeclipse开发工具。文档介绍了开发流程
flex4API文档 flex3的文档在Adobe网上就可,可是4的一直没找着. 这个Flex4API文档,是根据flex4 SDK生产的,非常权威
flex3的详细帮助文档,对于FLEX开发有很大的帮助
FLEX API。官方最新文档,方便开发者参考开发。内容丰富
Adobe® Flex® Software Development Kit (SDK) includes the Flex framework (component class library) and Flex compiler, enabling you to freely develop and deploy Flex applications using an IDE of your ...
Flex 文件上传的文件代码 交你一步一步的完成上传功能
Flex中文帮助文档,Flex中文帮助文档,Flex中文帮助文档,Flex中文帮助文档,Flex中文帮助文档。