声 明


本教程仅用于初学cocos2dx同学使用,内容由本人(孤狼)学习过程中笔记编写,本教程使用cocos2dx版本为2.1.4。本教程内容可以自由转载,但必须同时附带本声明,或注明出处。

gl.paea.cn版权所有。



大家好,欢迎回到“和屌丝一起学cocos2dx”系列教程,上节我们说到了“碰撞”不知道大家有没有做出效果来呢,这里还是提示一下,圆形碰撞是很常用的哦。下面我们就开始今天的课程吧,又是一个最常用的小编--音乐音效。

【一】:特性

在cocos2dx开发中,我们音乐的选择也是有区别的,因为虽然cocos2dx实现了跨平台,但是各个平台之间的标准还是乱七八糟。没有人任何机构来统一规范,所以导致我们的音乐要针对客户端准备。在游戏中,我们能听到的音乐有2中,1是长长的背景音乐,2是短短的特效音效。那么这两种选用什么格式的最好呢?

背景音乐

android Mp3 MID WAV

ios Mp3 CAF

音效

android OGG(仅支持)

ios CAF

这里只是推荐不是支持列表哦,可以看出来,Mp3由于他的特性所以最适合做背景音乐,而音效由于各个平台的不同,所以最佳选择也就不同了。当然了,这都不是问题,因为就算你们各个平台直接不能互通,万能的中国人早在十几年前就发明了音乐格式转换了,比如格式工厂等等,丫丫,小菜儿。

【二】:函数

preloadBackgroundMusic(音乐路径); //预加载音乐

playBackgroundMusic(音乐路径,是否重复); //播放音乐

pauseBackgroundMusic() //暂停

stopBackgroundMusic() //停止

resumeBackgroundMusic() //继续播放

rewindBackgroundMusic() //从头播放

isBackgroundMusicPlaying() //获取背景音乐是否在播放

getBackgroundMusicVolume() //获取音量

setBackgroundMusicVolume() //设置音量

preloadEffect(音效路径) //预加载音效

unloadEffect(音效路径) //释放音效文件

playEffect(音效路径,是否重复) //播放音效

stopEffect(音效ID) //停止

stopAllEffects() //全部停止

pauseEffect(音效ID) //暂停

pauseAllEffects() //全部暂停

resumeEffect(音效ID) //继续播放

resumeAllEffects() //全部继续播放

getEffectsVolume() //获取音量

setEffectsVolume() //设置音量

【三】:示例

1.新建项目 musicdemo

2.加载3张图片

musicdemo.h

1.包含音乐类和扩展类

#include "SimpleAudioEngine.h"

#include "cocos-ext.h"

2.引用命名空间cocos2d::extension

using namespace cocos2d::extension;

3.写3个对应的回调函数

void playmusic(CCObject * sender,CCControlEvent);

void pausemusic(CCObject * sender,242)">void stopmusic(CCObject * sender,192)">musicdemo.cpp

1.添加3个按钮

//创建3个按钮

CCScale9Sprite* sp1 = CCScale9Sprite::create("1.png");

CCScale9Sprite* sp2 = CCScale9Sprite::create("2.png");

CCScale9Sprite* sp3 = CCScale9Sprite::create("3.png");

CCControlButton * b1=CCControlButton::create(sp1);

CCControlButton * b2=CCControlButton::create(sp2);

CCControlButton * b3=CCControlButton::create(sp3);

b1->setPosition(ccp(mysize.width/2-100,mysize.height/2+100));

b2->setPosition(ccp(mysize.width/2,242)">b3->setPosition(ccp(mysize.width/2+100,242)">b1->addTargetWithActionForControlEvents(

this,

cccontrol_selector(HelloWorld::playmusic),242)"> CCControlEventTouchDown

);

b2->addTargetWithActionForControlEvents(

cccontrol_selector(HelloWorld::pausemusic),242)">b3->addTargetWithActionForControlEvents(

cccontrol_selector(HelloWorld::stopmusic),242)">b1->setPreferredSize(ccp(57,57));

b2->setPreferredSize(ccp(57,242)">b3->setPreferredSize(ccp(57,242)">this->addChild(b1,1);

this->addChild(b2,242)">this->addChild(b3,Tahoma; line-height:21px"> 2.根据当前系统判断预加载的文件

这里注意一下,在win下"/music/winback.mid"也可以找到这个音乐,但是android下不行,所以要注意开头不要加“/”

#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)

#define MUSIC_FILE "music/winback.mid"

#elif (CC_TARGET_PLATFORM == CC_PLATFORM_BLACKBerry || CC_TARGET_PLATFORM == CC_PLATFORM_LINUX )

#define MUSIC_FILE "none.ogg"

#else

#define MUSIC_FILE "music/androidback.mp3"

#endif

3.预加载音乐,设置音量

//加载音乐

SimpleAudioEngine::sharedEngine()->preloadBackgroundMusic(MUSIC_FILE);

//设置默认音量

SimpleAudioEngine::sharedEngine()->setBackgroundMusicVolume(1);

4.完成3个回调函数

void HelloWorld::playmusic(CCObject * sender,CCControlEvent){

SimpleAudioEngine::sharedEngine()->playBackgroundMusic(MUSIC_FILE,true);

}

void HelloWorld::pausemusic(CCObject * sender,242)"> SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();

void HelloWorld::stopmusic(CCObject * sender,242)"> SimpleAudioEngine::sharedEngine()->stopBackgroundMusic();

好了,最后我们在win上试一下,我也打好了apk包,大家可以直接下载试一下android的环境

cocos2dx-音乐音效的更多相关文章

  1. 当使用AVPLayer播放视频时,它会停止背景音乐ios

    我正在使用AVPlayer播放视频,它会阻止iPhone的背景音乐.请帮我解决解决方法我的电影是为了动画;他们没有声音.为了让其他声音继续播放,在Swift:感谢marcusAdams的原始答案.

  2. 如何在ios中恢复音频?

    我正在使用Audioplayer播放5-10秒的音频文件.我的应用程序允许其他应用程序的背景音乐.在播放我的音频时,我正在停用其他音乐完成我的音频后,我想播放停用的音乐.在AVAudioPlayer&AVAudioSession?还是哪个框架支持这个恢复功能?解决方法播放声音后,请取消激活您的AVAudioSession

  3. ios模拟器 – 是否可以在模拟器上测试iOS4多任务/背景音乐?

    我已经在Info.plist中添加了uibackgroundmodes属性以具有“audio”的数组条目,并添加了调用以设置音频会话:[sessionsetCategory:AVAudioSessionCategoryPlaybackerror:&error];.但是,我唯一的测试设备是不支持多任务的iPodTouch2G.我尝试过模拟器,但当我切换到Safari时,音乐停止播放.但是当我切换回我

  4. ios – MPMediaItemPropertyAssetURL仅为iPhone 5返回null

    我一直在使用以下代码从MPMediaItemPickerController返回的MPMediaItem对象中提取资源url,以便我可以将用户的iPhoneitunes音乐库中的音乐文件复制到文档文件夹进行处理,但在iPhone5上,我总是得到一个null来自MPMediaItemPropertyAssetURL的值,但是当我在iPhone4或iPhone5上运行相同的代码时,它应该返回正确的UR

  5. ios – 调节SKAction的音量播放文件名称:

    有没有办法通过SKActionplaySoundFileNamed:waitForCompletion:来调节播放的音量.我想实现一个简单的音乐&音效滑块在我的游戏.我可以轻松地控制背景音乐,因为我通过AVAudioPlayer播放,但所有的声音效果都是通过SKAction播放的.解决方法不幸的是,您无法使用SKAction修改卷,因此您必须使用AVAudioPlayer作为您的效果.你可以实现一

  6. ios – 允许用户在swift 2.0中播放背景音乐

    我正在寻找一些代码,允许用户在使用我的应用程序的同时从手机播放音乐.以前在swift2.0之前,我会把它放在应用程序委托中,它会很好的工作:有谁知道如何在swift2.0中实现?解决方法以下将是Swift2在AVSession上调用setCategory和setActive的语法:要么

  7. 如何降低swift音乐的音量?

    我正在创建一个带有背景音乐循环的SpriteKit游戏.问题是音乐太大了.如何降低音量?这是我用来设置音乐的代码你试过这个吗?

  8. 如何删除Android Lollipop中的前台通知?

    我希望停止/取消媒体播放器服务的前台通知,这与Google的Google音乐实施非常相似.例如,在Google音乐中,如果您正在播放音乐,则无法删除通知.但是,如果您暂停音乐,它可以.这与Android4.4上的实现方式完全不同,Android4.4仅在您离开应用程序时启动通知,并在您返回应用程序时自动删除.考虑到服务要求通知,我无法看到如何实现这一点.任何帮助将非常感激.解决方法Howdoire

  9. android – 用户刷掉应用程序后如何继续在后台播放音乐?

    在Android中,我使用Service和MediaPlayer播放音乐.当我按下主页按钮时音乐继续播放,但如果我“轻扫”应用程序则会停止播放.HowCouldIcontinuemusicplayingafterswipingawaytheapp?解决方法Androidmediaplayercode使用包含MediaPlayer对象的service.即使活动不在前台,这也允许继续播放.

  10. android – 如何打开音乐选择器?

    在我的应用程序中,我想制作一个选择器,为用户提供选择音乐的选择.我想使用本机android选择器.我使用以下代码打开本机Android音乐选择器:但是当我执行它,我得到一个ActivityNotFoundException和这个错误消息:“您的手机没有可用于选择文件的音乐库,请尝试发送不同类型的文件”我在做错事吗解决方法这对我来说很好:Intent.ACTION_GET_CONTENT的更一般的意

随机推荐

  1. 【cocos2d-x 3.x 学习笔记】对象内存管理

    Cocos2d-x的内存管理cocos2d-x中使用的是上面的引用计数来管理内存,但是又增加了一些自己的特色。cocos2d-x中通过Ref类来实现引用计数,所有需要实现内存自动回收的类都应该继承自Ref类。下面是Ref类的定义:在cocos2d-x中创建对象通常有两种方式:这两中方式的差异可以参见我另一篇博文“对象创建方式讨论”。在cocos2d-x中提倡使用第二种方式,为了避免误用第一种方式,一般将构造函数设为protected或private。参考资料:[1]cocos2d-x高级开发教程2.3节[

  2. 利用cocos2dx 3.2开发消灭星星六如何在cocos2dx中显示中文

    由于编码的不同,在cocos2dx中的Label控件中如果放入中文字,往往会出现乱码。为了方便使用,我把这个从文档中获取中文字的方法放在一个头文件里面Chinese.h这里的tex_vec是cocos2dx提供的一个保存文档内容的一个容器。这里给出ChineseWords,xml的格式再看看ChineseWord的实现Chinese.cpp就这样,以后在需要用到中文字的地方,就先include这个头文件然后调用ChineseWord函数,获取一串中文字符串。

  3. 利用cocos2dx 3.2开发消灭星星七关于星星的算法

    在前面,我们已经在GameLayer中利用随机数初始化了一个StarMatrix,如果还不知道怎么创建星星矩阵请回去看看而且我们也讲了整个游戏的触摸事件的派发了。

  4. cocos2dx3.x 新手打包APK注意事项!

    这个在编译的时候就可以发现了比较好弄这只是我遇到的,其他的以后遇到再补充吧。。。以前被这两个问题坑了好久

  5. 利用cocos2dx 3.2开发消灭星星八游戏的结束判断与数据控制

    如果你看完之前的,那么你基本已经拥有一个消灭星星游戏的雏形。开始把剩下的两两互不相连的星星消去。那么如何判断是GameOver还是进入下一关呢。。其实游戏数据贯穿整个游戏,包括星星消除的时候要加到获得分数上,消去剩下两两不相连的星星的时候的加分政策等,因此如果前面没有做这一块的,最好回去搞一搞。

  6. 利用cocos2dx 3.2开发消灭星星九为游戏添加一些特效

    needClear是一个flag,当游戏判断不能再继续后,这个flag变为true,开始消除剩下的星星clearSumTime是一个累加器ONE_CLEAR_TIME就是每颗星星消除的时间2.连击加分信息一般消除一次星星都会有连击信息和加多少分的信息。其实这些combo标签就是一张图片,也是通过控制其属性或者runAction来实现。源码ComboEffect.hComboEffect.cpp4.消除星星粒子效果消除星星时,为了实现星星爆裂散落的效果,使用了cocos2d提供的粒子特效引擎对于粒子特效不了

  7. 02 Cocos2D-x引擎win7环境搭建及创建项目

    官网有搭建的文章,直接转载记录。环境搭建:本文介绍如何搭建Cocos2d-x3.2版本的开发环境。项目创建:一、通过命令创建项目前面搭建好环境后,怎样创建自己的Cocos2d-x项目呢?先来看看Cocos2d-x3.2的目录吧这就是Cocos2d-x3.2的目录。输入cocosnew项目名–p包名–lcpp–d路径回车就创建成功了例如:成功后,找到这个项目打开proj.win32目录下的Hello.slnF5成功了。

  8. 利用cocos2dx 3.2开发消灭星星十为游戏添加音效项目源码分享

    一个游戏,声音也是非常的重要,其实cocos2dx里面的简单音效引擎的使用是非常简单的。我这里只不过是用一个类对所有的音效进行管理罢了。Audio.hAudio.cpp好了,本系列教程到此结束,第一次写教程如有不对请见谅或指教,谢谢大家。最后附上整个项目的源代码点击打开链接

  9. 03 Helloworld

    程序都有一个入口点,在C++就是main函数了,打开main.cpp,代码如下:123456789101112131415161718#include"main.h"#include"AppDelegate.h"#include"cocos2d.h"USING_NS_CC;intAPIENTRY_tWinMain{UNREFERENCED_ParaMETER;UNREFERENCED_ParaMETER;//createtheapplicationinstanceAppDelegateapp;return

  10. MenuItemImage*图标菜单创建注意事项

    学习cocos2dx,看的是cocos2d-x3.x手游开发实例详解,这本书错误一大把,本着探索求知勇于发现错误改正错误的精神,我跟着书上的例子一起调试,当学习到场景切换这个小节的时候,出了个错误,卡了我好几个小时。

返回
顶部