按钮往往都是带有点击的音效的,我们可以用最简单最暴力的方法给每个按钮的回调里边都加一句播放按钮音效的代码,但这样是相当麻烦的,并且还不好修改,那么有没有什么办法简单而好用呢?有,我们可以仿照绑定回调的宏写一个同时会播放音效的绑定回调函数的宏。
代码如下:
#ifndef _TOOLS_H_
#define _TOOLS_H_
#include "cocos2d.h"
#include "SimpleAudioEngine.h"
using namespace CocosDenshion;
//存放按钮音效路径的数组
static std::string audios[] = { "raw/slipe_music.wav" ,"raw/second_music.wav" /*..........*/ };
//按钮音效的类型枚举,值对应数组下标
enum BTN_MUSIC_TYPE {
DEFALT,
TYPE_ONE,
TYPE_TWO
//TYPE_XXX...........
};
//要绑定的中间回调函数
static void audioBind(cocos2d::Ref* p, std::function<void(cocos2d::Ref*)> func, BTN_MUSIC_TYPE type = BTN_MUSIC_TYPE::DEFALT)
{
//先播放按钮音效
if (cocos2d::UserDefault::getInstance()->getBoolForKey("btn_music_open", true)){//这个换成自己的条件播放音效
SimpleAudioEngine::getInstance()->playEffect(audios[