声音同样使用了单例模式:
声音直接在其他文件中使用;
将声音头文件包进去,在与金币碰撞,跳起和落下时播放
#pragma once
#include "cocos2d.h"
#include "SimpleAudioEngine.h"//使用声音要包含的头文件
#include "Def.h"//参数设定头文件
USING_NS_CC;
using namespace CocosDenshion;//使用声音要包含的命名空间
class Sounder
{
public:
static Sounder *getInstance();
bool init();
void playGold();//播放金币声音
void playTouch();//播放跳起和落声音
void playBackground();//播放背景
void playJump();//弃。。。
private:
Sounder();
~Sounder();
static Sounder *shareSounder;
};
#include "Sounder.h"
Sounder* Sounder::shareSounder = NULL;
Sounder *Sounder::getInstance()
{
if (shareSounder != NULL)
{
shareSounder = new Sounder;
// shareSounder->init();//改为在主场景中调用,避免第一次初始化时读取文件的卡顿
}
return shareSounder;
}
Sounder::Sounder()
{}
Sounder::~Sounder()
{
if (shareSounder)
{
delete shareSounder;
}
}
bool Sounder::init()//预读取声音文件
{
SimpleAudioEngine::getInstance()->preloadBackgroundMusic(MUSIC_BACKGROUND);
SimpleAudioEngine::getInstance()->preloadEffect(MUSIC_GOLD);
SimpleAudioEngine::getInstance()->preloadEffect(MUSIC_JUMP);
SimpleAudioEngine::getInstance()->preloadEffect(MUSIC_TOUCH);
return true;
}
void Sounder::playBackground()
{
SimpleAudioEngine::getInstance()->playBackgroundMusic(MUSIC_BACKGROUND,true);
}
void Sounder::playGold()
{
SimpleAudioEngine::getInstance()->playEffect(MUSIC_GOLD);
}
void Sounder::playJump()
{
SimpleAudioEngine::getInstance()->playEffect(MUSIC_JUMP);
}
void Sounder::playTouch()
{
SimpleAudioEngine::getInstance()->playEffect(MUSIC_TOUCH);
}