Cocos2d-JS 中游戏背景音乐与音效

cocosjs 音乐音效 var AudioEngine = { _curBgMusic: null, _isPlayMusic: true,//是否开启音乐 _isPlayEffect: true//是否开启音效 }; AudioEngine.setEnableMusic = function (isEnable) { if (this._isPla 阅读详情
游戏中音频的处理也是非常重要的,它分为背景音乐播放与音效播放。
背景音乐是长时间循环播放的,它会长时间占用较大的内存,背景音乐不能多个同时播放。
而音效是短的声音,它占用内存较小,音效能多个同时播放。
在Cocos2d-JS中提供了一个音频引擎—AudioEngine,通过引擎能够很好地控制游戏背景音乐与音效优化播放。
Cocos2d-JS音频文件
音频多媒体文件主要是存放音频数据信息,音频文件在录制的过程中把声音信号通过音频编码变成音频数字信号保存到某种格式文件中。在播放过程中再对音频文件解码,解码出的信号通过扬声器等设备可以转成音波。音频文件在编码的过程中数据量很大,所以有的文件格式对于数据进行了压缩。
音频文件可以分为:
(1)无损格式,是非压缩数据格式,文件很大,一般不适合移动设备。如WAV、AU、APE等文件。
(2)有损格式,对于数据进行了压缩,压缩后丢掉了一些数据,如MP3、WMA等文件。
1.WAV文件
WAV文件目前是最流行的无损压缩格式。WAV文件的格式灵活,可以存储多种类型的音频数据。由于文件较大,不太适合于移动设备这些存储容量小的设备。
2.MP3文件
MP3格式现在非常流行,MP3是一种有损压缩格式,它尽可能去掉人耳无法感觉的部分和不敏感的部分。
3.WMA文件
WMA格式是微软发布的文件格式,也是有损压缩格式,它与MP3格式不分伯仲。在低比特率渲染情况下,WMA格式显示出来比MP3更多的优点,压缩比MP3更高,音质更好。
4.CAFF文件
CAFF文件是苹果开发的专门用于Mac OS X和IOS系统无压缩音频格式。它被设计来替换老的WAV格式。
5.AIFF文件
AIFF文件是苹果开发的专业音频文件格式。AIFF的压缩格式是AIFF-C,将数据4:1压缩率进行压缩,专门给应用于Mac OS X和IOS系统。
6.MID文件
MID文件是MIDI格式,专业音频文件格式,允许数字合成器和其他设备交换数据。MID文件主要用于原始乐器作品、流行歌曲的业余表演、游戏音轨以及电子贺卡等。
7.Ogg文件
Ogg文件全称OggVobis,是一种新的音频压缩格式,类似于MP3等的音乐格式,Ogg是完全免费、开发和没有专利限制的。Ogg文件格式可以不断地进行大小和音质的改良,而不影响旧有的编码器或播放器。
Cocos2d-JS跨平台音频支持
Cocos2d-JS与Cocos2d-iphone不同,它是为跨平台而设计的游戏引擎,它不仅可以通过Cocos2d-x JSB在移动平台上运行,还可以通过Cocos2d-html在Web平台中运行,Cocos2d-x JSB是本地技术Cocos2d-x能够支持的音乐与音效文件。Cocos2d-JS也是支持的,
Cocos2d-JS对于背景音乐播放各个平台格式支持如下:
(1)Android平台支持与android.media,MediaPlayer所支持的格式相同。
andriod.media,MediaPlayer是Android多媒体播放类。
(2)IOS平台下支持推荐使用MP3和CAFF格式
(3)Windows平台支持MIDI、WAV和MP3格式
(4)Windows Phone8平台支持MIDI和WAV格式
(5)Web平台要依赖于具体的浏览器,如果支持HTML5,一般也会支持Ogg和MP3格式,可以是纯音频的MP4和M4A,但是使用之前需要进行测试。
Cocos2d-JS对于音效播放各个平台格式支持如下:
(1)Android平台支持Ogg和WAV文件,但最好是Ogg文件
(2)IOS平台下支持推荐使用CAFF格式
(3)Windows平台支持MIDI、WAV
(4)Windows Phone8平台支持MIDI和WAV格式
(5)Web平台要依赖于具体的浏览器,如果支持HTML5,一般也会支持WAV格式,但是使用之前需要进行测试。
使用AudioEngine引擎
Cocos2d-JS提供了一个音频AudioEngine引擎。具体使用的API是cc.AudioEngine.cc.AudioEngine有几个常用的函数:
(1)playMusic(url,loop)播放背景音乐,参数url是播放文件的路径,参数loop控制是否循环播放,默认情况下为false
(2)stopMusic() 停止播放背景音乐
(3)pauseMusic() 暂停播放背景音乐
(4)resumeMusic() 继续播放背景音乐
(5)isMusicPlaying() 判断背景音乐是否在播放
(6)playEffect(url,loop)播放音效,参数同playMusic函数
(7)pauseAllEffects暂停所有播放音效。参数audioID是playEffect函数返回ID
(8)pauseAllEffects()暂停所有播放音效
(9)resumeEffect(audioID)继续播放音效,参数audioID是playEffect函数返回ID
(10)resumeAllEffects()继续播放所有音效
(11)stopEffect(audioID)停止播放音效,参数audioID是playEffect函数返回ID
(12)stopAllEffects()停止所有播放音效
音频文件的预处理
无论播放背景音乐还是音效在播放之前进行预处理都是有必要的。如果不进行预处理,则会发现在第一次播放这个音频文件时感觉很“卡”,用户体验不好。Cocos2d-JS中提供了资源文件的预处理功能。
cc.LoaderScene.preload(g_resource,funcion(){
cc.director.runScene(new HelloWorldScene());},this);};
cc.LoaderScene.preload函数可以预处理一些资源;g_resources是资源文件集合变量,它是在resource.js文件中定义的。resource.js文件的内容如下:

关于播放背景音乐,理论上是可以将播放代码cc.audioEngine.playMusic(res.bgMusicSynth_mp3,true)放置到三个位置(代码中的第1,2,3行)
1.代码放到第1行
代码放到第1行,如果前面场景中没有调用背景音乐停止语句,则可以正常播放背景音乐。但是如果前面场景层HelloWorldLayeronExit函数有调用背景音乐停止语句,那么背景音乐播放几秒钟会停止。
注意:无论播放和停止的是否是同一个文件,都会出现这个问题。
2.代码放到第2行
代码放到第2行(即在SettingLayer onEnter),如果前面场景中没有调用背景音乐停止语句,则可以正常播放背景音乐,如果前面的场景层HelloWorldLayeronExit函数有背景停止音乐,也会出现背景音乐播放几秒钟后停止的现象。
3.代码放到第3行
推荐代码都放到第3行代码位置,因为onEnterTransitionDidFinish函数是在进入层而且过渡动画结束时调用,代码放到这里不用考虑前面场景是否有调用背景音乐停止音乐语句。而且也不会出现用于先听到声音,后出现界面的现象。
综上所述,是否能够成功播放背景音乐与前面场景是否有调用背景音乐停止语句有关。也与当前场景中播放代码在哪个函数里面有关。如果前面场景没有调用背景音乐停止语句,问题也就简单了。可以将播放代码放置在代码第1,2,3行任何一处,但是如果前面场景调用背景音乐停止语句,在onEnterTransitionDidFinish函数播放背景音乐会更好一些。
停止播放背景音乐
停止背景音乐播放代码放置到什么位置比较合适呢?

关于停止背景音乐播放,理论上是可以将停止播放代码cc.audioEngine,stopMusic(res.bgMusicSynth_mp3)放置到两个位置(代码中的第1行和2行)
1.代码放到第1行
代码放到第1行,如果后面场景中调用背景音乐播放,则可能导致播放背景音乐异常,但是如果在后面场景的onEnterTransitionDidFinish函数中播放背景音乐就不好有异常。
2.代码放到第2行
代码放到第2行,即在HelloWorldLayer onExitTransitionDidStart函数。这个函数第一个被执行,如果停止播放代码放在这里,不会对其他场景的背景音乐播放产生影响,推荐停止播放代码放在这里。
实例:
设置背景音乐和音效
第一步:重新修改resource.js文件。
第二步:实现



第1行代码var audioEngine=cc.audioEngine声明并初始化全局变量audioEngine,由于cc.audioEngine采用单例设计,audioEngine保存了cc.audioEngine单例对象。
第2行代码var isEffectPlay=true声明全局变量isEffectPlay.isEffectPlay表示音效是否可以播放。
代码第3,4,5行audioEngine(res.effectBlip_wav)是在单机菜单时播放音效。代码第6,7行audioEngine.playMusic(res.bgMusicSynth_mp3,true)播放背景音乐

虚拟摇杆技术实现指南:Cocos2d-js项目解析 虚拟摇杆是一种常见的用于移动游戏中的控制设备,它模拟了真实世界中的摇杆或操纵杆,允许玩家通过触摸屏幕来控制游戏中的角色或物体。这种界面元素非常适合用于移动设备,因为它可以很容易地适应各种屏幕尺寸和用户的手指操作。Cocos2d-js 是一个跨平台的开源框架,专为游戏开发而设计,它起源于 Cocos2d-iPhone,这是一个由 Ricardo Quesada 编写并于2008年发布的用于 iPhone 游戏开发的框架。 阅读详情

相关推荐

基于STM32F407与AD9910/AD9959的高频可调DDS信号源设计与实战

本文详细介绍了基于STM32F407微控制器与AD9910/AD9959高性能DDS芯片的高频可调信号源设计与实现。文章从DDS原理入手,阐述了双芯片方案的优势,并重点分享了高频电路设计中的电源、PCB布局布线等关键硬件设计技巧与避坑指南。同时,提供了通过SPI配置DDS芯片及利用Matlab生成任意波形的软件驱动方法,旨在帮助开发者打造一个覆盖10Hz至4200MHz的实用信号发生器。

weixin_36184718的博客 122

CocosCreator 音效管理器

Dictionary源码请查看另外一篇文章。代码都有注释不再赘述。

Zyt 1067

Sentinel-1 Burst数据处理避坑实录:从aria2c报错到wget脚本救场

本文详细介绍了Sentinel-1 Burst数据处理的完整解决方案,从下载困境到高效处理技巧。针对aria2c报错等常见问题,提供了增强版wget脚本和智能分组方法,显著提升下载成功率和处理效率,特别适合科研机构和企业级网络环境下的哨兵数据处理需求。

weixin_42641998的博客 284

cocos的音乐与音效及其实例

cocos的音乐与音效及其实例听音辨字实例 游戏里的声音按功能分为: 音乐 Music(BGM)背景音乐 音效 Audio当执行动作或响应的被脚本调用的音效 配音 Voice 播放声音,一般为2种办法: Audio source组件,一般适用于背景音乐播放,在节点上添加Audio source组件,设置相关属性即可 Audio Engine ApI播放即 cc. audioEngine.play(clip,loop,volume)一般适用音效和配音的播放 AudioSource的设置: Clip:

m0_46113894的博客 2540

保姆级教程:用STM32单片机实现国标交流充电桩的CP信号检测(附完整代码)

本文详细介绍了基于STM32单片机实现国标交流充电桩CP信号检测的全流程,包括硬件设计、软件架构和充电控制实现。通过分压电路设计、ADC配置和状态机逻辑,确保充电过程的安全与可靠性,适用于新能源汽车充电桩开发。附完整代码和调试技巧,助力开发者快速掌握关键技术。

weixin_42641998的博客 252

Mixly/Arduino实战:WS2812点阵动态显示自定义图案与汉字

本文手把手教你使用Mixly和Arduino驱动WS2812点阵屏,实现自定义图案与汉字的动态显示。内容涵盖硬件连接、取模软件设置、高效数据处理技巧(巧用Excel)、Mixly图形化编程及Arduino代码解析,并深入探讨动态显示与滚动汉字原理,最后提供常见问题排查与性能优化心得,助你从零开始轻松玩转智能硬件。

weixin_29185199的博客 454

一文带你实现游戏中的音乐、音效设置

在游戏开发过程中,背景音乐和音效的设置总是绕不过的,今天就来带大家实现一个简单的背景音乐和音效的设置逻辑。 1.首先将音乐资源和图片资源都导入到工程中(公众号后台回复「AudioTest」可获得完整工程,图片和音乐资源来自关东升老师《Cocos2d-x实战》,侵删。): 2.创建 MainScene,添加三个 Button 组件并摆放到合适位置: 3.创建 SettingScene,添加两个 ...

测试开发小白变怪兽 2359

ARM架构下Horizon Client安装全攻略:从依赖检查到环境变量配置

本文详细介绍了在ARM架构设备上安装VMware Horizon Client的全过程,包括依赖检查、软件包获取、系统部署和环境变量配置。特别针对华为鲲鹏等ARM平台,提供了从基础准备到性能优化的完整指南,帮助用户高效完成虚拟桌面客户端的部署与调优。

github5actions的博客 556

cocosCreator笔记 之 背景音乐

音频格式说明.ogg有损压缩格式。与同类型的音频相比,优点在于支持多声道编码,音质好,同时文件大小比.mp3格式小。.mp3有损压缩格式。被大量软硬件支持,应用广泛,是目前的主流。.wav一种标准数字音频文件,格式未压缩,文件占用较大。。.mp4是一套用于音频、视频信息的压缩编码标准,对于不同的对象采用不同的编码算法。.m4a仅有音频的MP4文件, 音频质量是压缩格式中非常高的,相同的比特率下,文件占用更小。在cocosCreator中使用clip添加用于播放音频的资源, 文件格式为loop。

鹤九日的博客 1662

微信小程序 - 接入腾讯地图 SDK 及详细使用教程,结合小程序 mpa 地图组件展示腾讯地图(基础使用 / 授权当前位置 / 配合小程序map组件的使用 / 腾讯地图逆地址解析 / 坐标系的转化)

微信小程序使用腾讯地图完整流程,微信小程序 接入腾讯地图,如何在微信小程序中接入腾讯地图,微信小程序引入腾讯地图API方法,腾讯地图小程序SDK,微信小程序实现使用腾讯地图SDK步骤详细介绍,微信小程序接入腾讯地图(线路规划、逆解析)、高德地图,微信小程序之使用腾讯地图,微信小程序 接入第三方地图,小程序服务器配置地图,微信小程序接入腾讯地图,微信小程序插入腾讯地图教程,微信小程序如何调用腾讯地图,如何在微信小程序中接入腾讯地图,微信小程序腾讯地图SDK使用方法,在微信小程序上创建一个简单的腾讯地图,微信小

✅ 精选推荐文章 1万+

YOLO26一文弄懂 | YOLO26内容详解、网络结构解读 、yolo26.yaml配置文件详细解读与说明、YOLO26虚拟环境安装、模型训练、验证、推理参数详细解析 | 通俗易懂!入门必看系列!

YOLO26目标检测模型创新与应用指南 本文全面介绍了YOLO26目标检测模型的创新特性、网络结构及实践应用。YOLO26基于四大核心原则设计:简洁性(移除NMS后处理)、部署效率(端到端架构)、训练创新(MuSGD优化器)和任务优化(支持多种视觉任务)。模型包含五种尺寸规格,CPU推理速度提升43%,支持目标检测、实例分割、姿态估计等任务。 文章详细解析了YOLO26的网络结构(Backbone-Neck-Head三部分)和yaml配置文件,提供了从虚拟环境配置到模型训练、验证、推理的完整教程。

Ai缝合怪、助力小伙伴高效发论文 2万+

cocos2d-js音效的处理

使用cocos2d-js,一不小心就给自己埋下了坑。 最近做音效的处理:在返回到主菜单时,停掉所有的音效以及背景音乐。 Cocos2d-JS提供了一个音频AudioEngine引擎。具体使用的API是cc.AudioEngine.cc.AudioEngine有几个常用的函数: (1)playMusic(url,loop)播放背景音乐,参数url是播放文件的路径,参数loop控制是否循环播放,默

hujiaojiao525的博客 1667

推荐一个直接用于项目开发的PID库!很好用,很稳定

关注、星标公众号,不错过精彩内容大家好,我是小麦。最近有朋友问到有没有现成的C语言PID库。当然有了!现在我就准备给大家安利一下了。一般同学会去某度上搜,看到各种各样版本的PID示例,或者...

一名热爱技术的工程师的博客。分享技术干货,记录美好生活。永远相信美好的事情即将发生。 9027

Cocos2d-js07-添加音乐及音效和发布朋友圈

Cocos2d-js07-添加音乐及音效和发布朋友圈 1、添加背景音乐和音效,代码: //播放背景音乐 cc.audioEngine.playMusic(res.bg_mp3,true);   //播放音效 cc.audioEngine.playEffect(res.bg_effect);   2、下载XAMPP软件进行安装,并且启动。 3、进入到SnakeGame项目目录下,然

Astor的专栏 884

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

CVP认证学习笔记--李天宇025添加音乐和音效

这节课,主要讲述的是如何播放一段音乐和播放音效。一般加背景音乐是在onEnter函数里边加。而本节课我们实现的是通过点击屏幕产生音效播放效果,并让背景音乐循环播放。本章节比较容易只需要用到两个函数:①cc.audioEngine.playmusic(“音乐的路径”,是否循环)                               ②cc.audioEngine.playEffect(“音乐

寒風的专栏 507

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

cocos creator 声音、音效使用与本地存储

console.log("############################ init sound manager ###########################################") //声音管理模块对象; var sound_manager = { is_music_mute: -1, //背景音乐是否禁音 0没有静音 1静音 is_effec...

twicetwice的博客 2840

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Cocos2d-x初入学堂(15)-->背景音乐和音效

欢迎转载!转载时请注明出处:http://write.blog.csdn.net/postedit/8140083 首先在这里和大家说抱歉,上讲我说了,准备这篇讲动作编辑器了,但是网上真的没有什么很好的动作编辑器,spriteX勉强可以凑合,但是我还只有java解析版的,有空我解析下,然后分享给大家用吧~ 一个游戏,如果不加声音会降低整个游戏的吸引力,一些经典的游戏,我们一听到声音,就知道是什...

445822357 170

Cocos2D-x背景音乐和音效的控制方法

Cocos2D-x背景音乐和音效的控制方法,对于 Cocos2D-x本人也是初学阶段,请各位大神多多指教

老板,猪脚要大扣滴的专栏 4019

十一 手游开发神器 cocos2d-x editor 之音乐和音效

这一节主要是介绍cocos2dx editor的背景音乐和音效。cocos2dx editor是开发跨平台的手机游戏工具,运行window系统上,javascript脚本语言,基于cocos2d-x跨平台游戏引擎, 集合代码编辑,场景设计,动画制作,字体设计,还有粒子,物理系统,地图等等的,而且调试方便,和实时模拟器。

TouchSnow的专栏 4772

Cocos2d JavaScript 游戏开发学习指南(一)

移动 HTML5 休闲游戏正经历着一个黄金时代。不仅包括著名的 Flash 热门游戏和成功的本地移动游戏,还包括为移动浏览器量身定制的原创游戏,每天都有数百万玩家在玩。随着越来越多的移动设备可供玩 HTML5 游戏,并且每个设备都有其自己的分辨率、显示尺寸和比例,为每个设备创建一个游戏版本将让你浪费很多时间。这就是为什么有一种新的制作 HTML5 游戏的方法,称为 跨平台。这意味着你只需创建一个游戏,一些魔法就会将其适配到所有能够运行 HTML5 内容的设备。这种魔法被称为 Cocos2d-JS,它允许你专

龙哥盟 853

cocos2d-js音效API

播放背景音乐 cc.audioEngine.playMusic(  url , loop );  @param {String} url 声音路径 @param {Boolean} loop 是否循环播放   停止背景音乐 cc.audioEngine.stopMusic (releaseData); * @param {Boolean} releaseD

蚂蚁的坚持 2873

cocos2d-js开发ios项目,按home键导致音效不能播放

问题: 在游戏开始时,背景音乐音效都播放正常,在按home键时,在回到游戏中,音效就不能播放了,此时音效正常! 解决过程分析: 游戏在退出时,调用了 cc.eventManager.addCustomListener(cc.game.EVENT_HIDE, function(){});在这里没有对背景音乐做任何处理。 我在偶然的测试中,把背景音乐关了,然后按home退出,在进入游戏,音效还

hahahzzzzz的博客 988

cocos2d 音效的添加,使用

头文件 #import "SimpleAudioEngine.h" init 里 进行加载 [[SimpleAudioEngine sharedEngine] preloadEffect:@"choice_ok.mp3"]; [[SimpleAudi

ssihc0的专栏 1544

cocos2d-js 游戏源码

四款不同类型的游戏 完整的项目 https://github.com/QQ951127336/Game_byJavaScript 10秒内吃萝卜 /** * Created by 95112 on 2018/4/1. */ var rabbit = null; var size = null; var xStep = null; var yStep = null; va...

厚积薄发,持之以恒 7359
上一篇: Cocos2d-JS 加速度计与加速度事件
下一篇: Cocos2d-JS 粒子效果
AiCoding_D
博客等级 码龄11年 4粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值