1.设置背景音乐:
//首先添加需要#include "SimpleAudioEngine.h"且播放音乐的类不在Cocos2d包下,而是在CocosDenshion包下,各位要注意。
CocosDenshion::SimpleAudioEngine::sharedEngine()->playBackgroundMusic("sky_city.mp3",true);//第一个参数是音乐文件路径,第二个参数是是否重复播放。
2.创建一个新的场景:
.h文件
#ifndef _GAMEOVER_H_
#define _GAMEOVER_H_
#include"cocos2d.h"
USING_NS_CC;
class gameover:public CCLayerColor{
public:
CCLabelTTF*_label; //创建一个标签
virtual bool init();
static CCScene *scene();
CREATE_FUNC(gameover);
~gameover();
void returntogame(CCNode*); //切换场景函数
};
#endif
.cpp文件
bool gameover::init(){
if(CCLayerColor::initWithColor(ccc4(255,0,255,255))){
CCSize visiblesize=CCDirector::sharedDirector()->getVisibleSize();
_label=CCLabelTTF::create("Game Over","Artial",40); //给标签添加内容
_label->setPosition(ccp(visiblesize.width/2,visiblesize.height/2));
this->addChild(_label);
_label->retain(); //保证_label和layer有同样的生命周期
CCDelayTime*delay=CCDelayTime::create(3);
CCCallFuncN*returntogame=CCCallFuncN::create(this,callfuncN_selector(gameover::returntogame));
this->runAction(CCSequence::create(delay,returntogame,NULL));
return true;
}
return false;
}
3.场景之间的切换:
void HelloWorld::selfdefine(CCNode *who){
who->removeFromParentAndCleanup(true); //重屏幕上清除目标
int Tag=who->getTag(); //通过Tag区分是靶子还是射弹
if(1==Tag){ //只要一个没打中就切换失败场景
_targets->removeObject(who);
CCScene*scene=gameover::scene();
gameover*overlayer=(gameover*)scene->getChildByTag(100); //获取ganeover层里标志为100的_label的方法
overlayer->_label->setString("You Are sock"); //修改gameover层里_label的值
CCDirector::sharedDirector()->replaceScene(scene); //修改值后切换场景
}
else if(2==Tag)
_projs->removeObject(who);
}
4.创建一个延迟,延迟后并且返回原先场景
CCDelayTime*delay=CCDelayTime::create(3); //参数是延迟秒数CCCallFuncN*returntogame=CCCallFuncN::create(this,callfuncN_selector(gameover::returntogame)); //调用自定义的returntogame函数重新返回延迟之前的场景
this->runAction(CCSequence::create(delay,returntogame,NULL));
void gameover::returntogame(CCNode*){
CCDirector::sharedDirector()->replaceScene(HelloWorld::scene()); //切换到延迟前的场景
}