`

[转]ActionScript中的音效控制

阅读更多
http://bbs.9ria.com/viewthread.php?tid=73409&extra=page%3D1%26amp;orderby%3Ddateline%26amp;filter%3D2592000

原始教程:Bird's Nest
Demo:SoundController

在製作Flash遊戲(或網站)時有時會播放一些音效或音樂,並且有控製聲音的按鈕,可以切換聲音的開關來控製整體的音效,想要放在某一類別進行控製,而不是將程式碼散置在各處,也許可以使用設計模式中的單態模式(Singleton Pattern)來實現這些功能。

【tw/com/birdnest/SoundController.as】
Step 1.一開始建立SoundController類別,使用Singleton Pattern的好處之一是不必擔心實例化許多物件而造成聲音互相重疊或不易控製。
private static var _instance:SoundController = null;

public static function getInstance():SoundController {
   //第一次使用初始化_instance,_instance為private因為無法直接取用,
   //而需透過getInstance()方法
   if (SoundController._instance == null){
      //加入聲音
      addSound(BACKGROUND_MUSIC_NAME , BACKGROUND_MUSIC_URL);
      addSound(THUNDER_BUTTON_SOUND_NAME , THUNDER_BUTTON_SOUND_URL);
      SoundController._instance = new SoundController();
   }
   return SoundController._instance;
}


Step 2.加入聲音addSound方法。這裡使用關連陣列加入每個Sound物件,些範例是直接需要用到的音效的路徑參數直接寫在SoundController,我想在遊戲的實作中應該需要有一個專門處理初始值的物件來處理這一塊會較好,畢竟遊戲中會用到的元素並不一定只會有聲音。
範例中我使用BACKGROUND_MUSIC_URL、BACKGROUND_MUSIC_NAME…等常數來避兔打錯字。
private static function addSound(soundName:String, url:String):void { 
   var sound:Sound = new Sound();
       sound.load(new URLRequest(url));
       sounds[soundName] = sound;                        
}


Step 3.播放聲音playSound方法。還滿單純的,直接使用for...in來找目前需要播放那一個音樂/音效。
public function playSound(soundName:String, 
                          startTime:Number = 0, 
                          loops:int = 1):void { 
   if (!_soundFlag) return;
   for (var tempName:String in sounds) {
      if (tempName == soundName) {
         sounds[tempName].play(startTime, loops);
         return;
      }
   }
}


Step 4.關閉所有聲音closeAllSound方法。SoundMixer.stopAll()靜態方法可以直接將所有的聲音關閉。
public function closeAllSound():void {
   _soundFlag = false;
   SoundMixer.stopAll();
}


Step 5.打開聲音openSound
public function openSound():void {
   _soundFlag = true;
}


除了上列的方法以外,遊戲中可能也會有其它需求,像是調背景音樂或音效大小、聲音位移的位置之類的功能,我想應該也可以加入一些方法來實作,目並還沒有實作這樣的功能。


使用方法:
【tw/com/birdnest/Main.as】
單純播放閃電的音效。
SoundController.getInstance().playSound(SoundController.THUNDER_BUTTON_SOUND_NAME);


【tw/com/birdnest/SoundButton.as】
建立一個開與關的功能,將所有的聲音開與關。
private var soundFlag:Boolean = true;
private function onochangesound(et:MouseEvent):void {
   soundFlag = !soundFlag;                                        
   if (soundFlag) {
      gotoAndPlay(1);
      soundController.openSound();
      soundController.playSound(SoundController.BACKGROUND_MUSIC_NAME, 
                                0, 
                                int.MAX_VALUE);
   }else {
      gotoAndStop("close");
      soundController.closeAllSound();
   }
}

分享到:
评论

相关推荐

    60个转场音效

    在Flash项目中,这些转场音效可以通过ActionScript脚本来控制,实现精确的触发和播放,为用户带来更丰富的互动体验。 接下来,我们讨论一下如何在网页和Flash中应用这些转场音效。在网页中,音效通常通过JavaScript...

    ActionScript开发技术大全

    20.3.3音效控制 425 20.4MP3播放器 425 20.5使用麦克风 434 20.5.1获取麦克风 434 20.5.2回环模式 435 20.5.3静音设置 436 20.6录制音频到RED5服务器 436 20.7小结 442 第21章视频编程 443 21.1FLV视频 443 21.1.1...

    Flash动画音效素材

    6. **ActionScript控制**:通过ActionScript,开发者可以实现更高级的音效控制,比如动态加载、播放、暂停、停止、音量控制等。ActionScript是Flash的编程语言,它赋予了动画交互性和动态性。 7. **优化与导出**:...

    actionscript 3.0 射击游戏

    1. 音效:ActionScript 3.0支持MP3、WAV等多种音频格式,可以轻松添加背景音乐和各种音效,如枪声、爆炸声等。 2. 特效:粒子系统、爆炸效果、烟雾等特效可以通过编程或使用预设的动画资源实现。 七、游戏状态管理...

    ActionScript3.0做的Flash小游戏 俄罗斯方块

    ActionScript3.0支持播放音频,游戏可能会有背景音乐和方块落地、消除行时的音效。通过Sound和SoundChannel类,开发者可以实现音频的播放和控制。 9. **性能优化**: 由于Flash运行在浏览器或独立播放器中,...

    ActionScript 3.0 Game Programming University

    6. **声音处理**:游戏中的音效和背景音乐是提升体验的关键。AS3.0提供对音频的播放、暂停、停止等操作,以及音量控制。 7. **碰撞检测**:游戏中的碰撞检测是实现游戏规则的重要部分,AS3.0提供了多种检测方法,如...

    ActionScript3.0游戏编程源码

    ActionScript 3.0的Sound和SoundChannel类提供了音频播放和控制的功能。 7. **网络通信**:多人在线游戏需要与服务器进行数据交换,ActionScript 3.0的Socket和XMLSocket类支持TCP和UDP通信。 8. **资源管理**:...

    学_Flash 中的 ActionScript 2.0

    ActionScript 2.0是Adobe Flash Professional中使用的一种编程语言,用于创建交互式动画、游戏以及富互联网应用程序(RIA)。这个教程"学_Flash 中的 ActionScript 2.0"显然是为了帮助初学者掌握这种强大的脚本语言...

    源文件_ActionScript 3.0游戏编程

    7. **音频处理**:ActionScript 3.0提供了强大的音频处理功能,包括播放、暂停、音量控制和音效合成,对于游戏音效和背景音乐的实现非常有用。 8. **网络通信**:使用URLLoader和XMLSocket等类,游戏可以实现与...

    ActionScript3小游戏-贪吃蛇

    ActionScript3是Flash Professional中的主要脚本语言,它为开发动态交互式内容提供了强大的支持。这款贪吃蛇游戏展示了ActionScript3在游戏开发中的应用,通过深入学习和理解这个游戏的代码,我们可以掌握许多重要的...

    ActionScript3.0 游戏编程大学[含源码]

    音效和音频处理也是游戏体验的重要方面,《ActionScript3.0 游戏编程大学》会讲解如何使用AS3.0的Sound和Microphone类来实现游戏音频的播放、暂停和音量控制。这使得开发者可以为游戏添加背景音乐和音效,增强游戏...

    actionscript3.0+翻书效果

    ActionScript 3.0 是Adobe Flash Professional中使用的编程语言,它是AS2的升级版,具有更强大、更高效的语言特性。在"actionscript3.0+翻书效果"的项目中,开发者使用ActionScript 3.0实现了模拟真实书籍翻页效果的...

    贪吃蛇游戏--ActionScript3.0版

    ActionScript是Adobe Flash Professional和Flash Builder等工具中的编程语言,用于创建交互式内容,如网页游戏、动画和应用程序。 ActionScript3.0是该语言的一个重大更新,引入了许多改进,包括类型检查、面向对象...

    actionscript3.0游戏实例教程

    5. **声音处理**:如何播放和控制游戏中的音效。 6. **图形绘制**:学习使用Graphics类进行矢量图形绘制。 7. **交互设计**:用户输入处理,如键盘和鼠标事件监听。 8. **碰撞检测**:如何检测游戏中的对象是否发生...

    ActionScript 3.0 Game Programming University教程和源码

    6. **声音处理**:学习如何在AS3.0中播放、暂停、停止和控制音效,包括音频缓冲和音量控制。 7. **物理引擎**:虽然不是AS3.0内置功能,但可以通过第三方库(如Box2D或Papervision3D)实现简单的物理模拟,如碰撞...

    eluosi.rar_actionscript

    以上内容只是ActionScript实现俄罗斯方块编程的一部分要点,实际开发中还需要考虑优化性能、界面设计、音效集成等方面。熟练掌握ActionScript语言,结合良好的编程实践,可以构建出更具吸引力和挑战性的游戏体验。...

    flash简短音效

    3. ActionScript:Flash的编程语言,用于控制音效播放、音量、循环等行为。 4. 时间轴控制:在Flash的时间轴上安排音效,使其与动画同步。 5. 声音类库:如AS3 Sound类,用于在ActionScript 3中处理音频。 6. 压缩和...

    actionscript3游戏编程素材

    6. **声音与视频**:在游戏开发中,音效和视频可以增强用户体验。学习如何加载、播放和控制媒体,以及如何处理声音的合成和处理,将使你的游戏更具吸引力。 7. **网络通信**:如果游戏需要在线多人功能,那么理解...

    Actionscript3.0开发的射击小游戏

    - 游戏中可能有射击音效、背景音乐等,需要合理管理音频资源,确保流畅播放。 7. **游戏逻辑**: - “三角也疯狂”可能包含敌机生成、子弹轨迹计算、得分系统、生命值管理等复杂逻辑。 - 利用面向对象的设计模式...

Global site tag (gtag.js) - Google Analytics