cocos2d-x 游戏背景音乐与音效

一Cocos2D-X中的音频文件

1.音频文件简介

无损格式/有损格式

1>.WAV

是目前最流行的一种无损压缩格式,但是比较大,不适合内存比较小的设备使用

2>,MP3

是非常流行的格式,但是是有损压缩格式,会去掉一部分人耳无法听到的声音,使用MPEG Audio Layer 3 技术压缩,可达到1:10的压缩率.

3>.WMA

微软发布的格式,有损压缩,在某些情况下比MP3要更好一点.

4>.CAFF

苹果发布的一种无压缩格式

5>.AIFF

专业音频格式,用于IOS系统

6>.MID

不常用.

7>.OGG

没有专利限制的格式,正在逐步广泛使用.安卓平台推荐,体积小.

2Cocos2D-X跨平台 音频支持
  1. 背景音乐

  2. 即时音效

二 使用音频引擎

class EXPORT_DLL SimpleAudioEngine 

{

public: 

// 获取类的实例 

static SimpleAudioEngine* getInstance(); 

// 获取类的实例 

CC_DEPRECATED_ATTRIBUTE static SimpleAudioEngine* sharedEngine() { return 

SimpleAudioEngine::getInstance(); } 

static void end(); 

/* 处理背景音乐相关函数 */ 

// 预加载 

virtual void preloadBackgroundMusic(const char* filePath); 

// 播放virtual void playBackgroundMusic(const char* filePath, bool loop = false); 

// 停止 

virtual void stopBackgroundMusic(bool releaseData = false); 

// 暂停 

virtual void pauseBackgroundMusic(); 

// 继续 

virtual void resumeBackgroundMusic(); 

// rewind 

virtual void rewindBackgroundMusic(); 

virtual bool willPlayBackgroundMusic(); 

// 是否在播放背景音乐 返回值:是否在播放 

virtual bool isBackgroundMusicPlaying(); 

// 获取背景音乐音量 

virtual float getBackgroundMusicVolume(); 

// 设置背景音乐音量 

virtual void setBackgroundMusicVolume(float volume); 

/* 处理即时音效相关函数 */ 

// 获取即时音效音量 

virtual float getEffectsVolume(); 

// 设置即时音效音量 

virtual void setEffectsVolume(float volume); 

// 播放 

virtual unsigned int playEffect(const char* filePath, bool loop = false, 

	float pitch = 1.0f, float pan = 0.0f, float gain = 1.0f); 

// 暂停指定音效 

virtual void pauseEffect(unsigned int soundId); 

// 暂停所有音效 

virtual void pauseAllEffects(); 

// 继续指定音效 

virtual void resumeEffect(unsigned int soundId); 

// 继续所有音效 

virtual void resumeAllEffects(); 

// 停止指定音效 

virtual void stopEffect(unsigned int soundId); 

// 停止所有音效 

virtual void stopAllEffects(); 

// 预处理 

virtual void preloadEffect(const char* filePath); 

virtual void unloadEffect(const char* filePath); 

protected: 

SimpleAudioEngine(); 

virtual ~SimpleAudioEngine(); 

};

使用音频引擎时,需要:

#include “SimpleAudioEngine.h”

using namespace CocosDenshion;一 音频文件的预处理

预处理的代码,写在哪里比较好?

二 播放背景音乐

背景音乐的播放代码,写到哪里比较合适?

1 init函数

2 onEnter函数

// 预处理背景音乐 
SimpleAudioEngine::getInstance()->preloadBackgroundMusic("sound\\backmusic1.mp3"); 
// 预处理即时音效 
CocosDenshion::SimpleAudioEngine::getInstance()->preloadEffect("sound\\item.wav"); 
// 没有使用命名空间就必须加上 CocosDenshion:: 在类名前面 
bool AppDelegate::applicationDidFinishLaunching() 
{ 
	// ... ... 
	director->runWithScene(myLoadScene); 
	// 预处理背景音乐 
	SimpleAudioEngine::getInstance()->preloadBackgroundMusic("sound\\backmusic1.mp3"); 
	// 预处理即时音效 
	CocosDenshion::SimpleAudioEngine::getInstance()- >preloadEffect("sound\\item.wav"); 
	// ... ... 
	return true; 
} 
// 播放背景音乐 
SimpleAudioEngine::getInstance()->playBackgroundMusic("sound\\backmusic1.mp3", true); 
// 播放即时音效 
SimpleAudioEngine::getInstance()->playEffect("sound\\item.wav", true); 
virtual bool init() override; 
virtual void onEnter() override; 

virtual void onEnterTransitionDidFinish()override;
3 onEnterTransitionDidFinish函数

推荐

三 停止背景音乐

背景音乐的停止代码,写到哪里比较合适?

1 onExit函数**

2 onExitTransitionDidStart函数**

3 cleanup函数**

推荐

四 暂停和继续背景音乐

SimpleAudioEngine::getInstance()->stopBackgroundMusic(); 

SimpleAudioEngine::getInstance()->stopBackgroundMusic("sound\\backmusic1.mp3"); 

virtual void onExit()override; 

virtual void onExitTransitionDidStart()override; 

virtual void cleanup()override; 

// 暂停背景音乐 

SimpleAudioEngine::getInstance()->pauseBackgroundMusic(); 

// 继续背景音乐 

SimpleAudioEngine::getInstance()->resumeBackgroundMusic(); 

void AppDelegate::applicationDidEnterBackground() { 

	Director::getInstance()->stopAnimation(); 

	// if you use SimpleAudioEngine, it must be pause 

	// SimpleAudioEngine::getInstance()->pauseBackgroundMusic(); 

}

void AppDelegate::applicationWillEnterForeground() { 

	Director::getInstance()->startAnimation(); 

	// if you use SimpleAudioEngine, it must resume here 

	// SimpleAudioEngine::getInstance()->resumeBackgroundMusic(); 
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浔汐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值