typedef struct {
unsigned int soundId;
const char* soundFilePath;
}Sound;
typedef struct {
const char* musicFilePath;
} Music;
/*
* 注意,Andoird下面只支持.ogg
*
*/
static Music bgMusic =
{
"audio/mainbgmusic.ogg"
};
static Sound testSound =
{
0,
"audio/clicksound.ogg"
};
class AudioManager
{
public:
/* 注意,此方法在进入游戏前调用 */
static void init();
public:
/* 预加载 */
static void preLoadBgMusic(Music& music);
static void preLoadSound(Sound& sound);
/* 播放 */
static void playMusic(Music& music,bool loop = true);
static void playSound(Sound& sound,bool loop = false);
/* 暂停 */
static void pauseMusic(Music& music);
static void pauseSound(Sound& sound);
/* 停止 */
static void stopMusic(Music& music,bool release = true);
static void stopSound(Sound& sound);
static void stopAllSound();
/* 恢复 */
static void resumeMusic();
/* 全部结束 */
static void end();
};
void AudioManager::init()
{
/* 例子 */
preLoadBgMusic(bgMusic);
preLoadSound(testSound);
}
/*********************************************************
一些方法的封装
*********************************************************/
void AudioManager::preLoadBgMusic(Music& music)
{
using namespace CocosDenshion;
using namespace cocos2d;
music.musicFilePath = CCFileUtils::sharedFileUtils()->fullPathFromRelativePath(music.musicFilePath);
CCLOG(music.musicFilePath);
SimpleAudioEngine::sharedEngine()->preloadBackgroundMusic(music.musicFilePath);
}
void AudioManager::preLoadSound(Sound& sound)
{
using namespace CocosDenshion;
using namespace cocos2d;
sound.soundFilePath = CCFileUtils::sharedFileUtils()->fullPathFromRelativePath(sound.soundFilePath);
SimpleAudioEngine::sharedEngine()->preloadEffect(sound.soundFilePath);
}
void AudioManager::playMusic(Music& music,bool loop/* default = true */)
{
using namespace CocosDenshion;
/* 先判断是否已经在播放,如果在播放,则直接返回 */
if (SimpleAudioEngine::sharedEngine()->isBackgroundMusicPlaying()) {
return;
}
SimpleAudioEngine::sharedEngine()->playBackgroundMusic(music.musicFilePath, loop);
}
void AudioManager::playSound(Sound& sound,bool loop/* default is false */)
{
using namespace CocosDenshion;
sound.soundId = SimpleAudioEngine::sharedEngine()->playEffect(sound.soundFilePath, loop);
}
void AudioManager::pauseMusic(Music& music)
{
using namespace CocosDenshion;
SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
}
void AudioManager::pauseSound(Sound& sound)
{
using namespace CocosDenshion;
SimpleAudioEngine::sharedEngine()->pauseEffect(sound.soundId);
}
void AudioManager::stopMusic(Music& music,bool release/* default is true */)
{
using namespace CocosDenshion;
SimpleAudioEngine::sharedEngine()->stopBackgroundMusic(release);
}
void AudioManager::stopSound(Sound& sound)
{
using namespace CocosDenshion;
SimpleAudioEngine::sharedEngine()->stopEffect(sound.soundId);
}
void AudioManager::stopAllSound()
{
using namespace CocosDenshion;
SimpleAudioEngine::sharedEngine()->stopAllEffects();
}
void AudioManager::resumeMusic()
{
using namespace CocosDenshion;
SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();
}
void AudioManager::end()
{
using namespace CocosDenshion;
SimpleAudioEngine::sharedEngine()->end();
}
注意:
进入游戏后,开始初始化资源调用
/* 初始化游戏音效 */
AudioManager::init();
游戏切换到后台调用:
AudioManager::pauseMusic(bgMusic);
游戏重新切换回前台
AudioManager::resumeMusic();
分享到:
相关推荐
cocos2dx允许播放多个音效及手机版播放声音时崩溃
cocos2dx scrollview优化
基于cocos2dx3.2的ScrollView改良版,paging分页部分是参考网上已有的源代码并进行改良,修复bug, indicator指示器部分是自己研发。 测试环境:mac os x (Windows平台 应该可行,需要你自己添加PagedScrollView到...
IOS开发中因为引入cocos2dx,导致代码审核不通过无法提交( Apple will stop accepting submissions of apps that use UIWebView APIs )。该问题的解决方案有两种:1)升级Cocos2dx的版本,在查看Cocoas官网及Cocoas...
cocos2dx 模糊效果代码提供,尽情下载吧!
cocos2dx中使用精灵的例子,新手可参考。
此代码在cocos2dx2.1.4下面编译有部分错误,我修改后,正常。 下下来后,请在VC++包含目录中链接(F:\cocos2d-x-2.1.4\cocos2dx\platform\win32;F:\cocos2d-x-2.1.4\cocos2dx\platform\third_party\win32\OGLES\GL\;...
我所理解的cocos2dx pdf
其中配置包括了cocos2dx 2.0.4和cocos2dx2.1.3在lua中所有函数,类,类的成员变量和方法以及相关枚举定义 使用方法: 1.打开本目录下LuaKeywords.config,将里面内容复制到LuaStudio的自定义函数配置中 2.拷贝cocos...
cocos2dx可用3d粒子编辑器,支持pc、mac、iphone、android等平台
cocos2dx斗地主服务端,客户端在我的资源列表中
某手游cocos代码
delphi-cocos2dx.zip
cocos2dx学习代码,小游戏黄金矿工,值得学习.重要事情说三遍
对于不是luajit编译成字节码的可以破解,只需知道cocos2dx key 和 签名,这些可以通过ida获取
cocos2dx 2048
一系列cocos2dx相关的pdf书籍文档,方便热爱cocos2dx的同学学习
手游开发引擎 Cocos2DX.手机游戏开发
使用 cocos2dx 的 drawnode 绘制水波浪效果代码,在游戏开发中需要用到,网上找了很久没有找到,自己写了一个,drawnode 绘制节点绘制,用到了 sin ,封装了一个水浪效果层, 但用一个小问题就是边缘有点锯齿....
使用cocos2dx新建的helloword工程,嵌入到android原生项目中的demo