解析类
//
// MenuSceneLoader.h
// XiaoQianRun
//
// Created by BFM on 13-12-8.
//
//
#ifndef __XiaoQianRun__MenuSceneLoader__
#define __XiaoQianRun__MenuSceneLoader__
#include <iostream>
#include "cocos2d.h"
#include "cocos-ext.h"
#include "MenuScene.h"
USING_NS_CC;
USING_NS_CC_EXT;
class MenuSceneLoader : public CCLayerLoader{
public:
//创建当前对象 参数 当前对象 创建当前对象的方法名
CCB_STATIC_NEW_AUTORELEASE_OBJECT_METHOD(MenuSceneLoader, loader);
private:
//创建要解析的类
CCB_VIRTUAL_NEW_AUTORELEASE_CREATECCNODE_METHOD(MenuScene);
};
#endif /* defined(__XiaoQianRun__MenuSceneLoader__) */
//
// MenuScene.h
// XiaoQianRun
//
// Created by BFM on 13-12-8.
//
//
#ifndef __XiaoQianRun__MenuScene__
#define __XiaoQianRun__MenuScene__
#include <iostream>
#include "cocos2d.h"
#include "cocos-ext.h"
USING_NS_CC;
USING_NS_CC_EXT;
class MenuScene : public CCLayer,
public CCBSelectorResolver{
public:
static CCScene* scene();
//用于解析类的create
CCB_STATIC_NEW_AUTORELEASE_OBJECT_WITH_INIT_METHOD(MenuScene, create);
bool init();
private:
//继承类CCBSelectorResolver里的纯虚函数
virtual SEL_MenuHandler onResolveCCBCCMenuItemSelector(CCObject * pTarget, const char* pSelectorName);
virtual SEL_CCControlHandler onResolveCCBCCControlSelector(CCObject * pTarget, const char* pSelectorName);
void onStart();
};
//
// MenuScene.cpp
// XiaoQianRun
//
// Created by BFM on 13-12-8.
//
//
#include "MenuScene.h"
#include "MenuSceneLoader.h"
#include "SelectMapLayer.h"
#include "SimpleAudioEngine.h"
using namespace CocosDenshion;
CCScene* MenuScene::scene() {
CCScene *scene = CCScene::create();
CCNodeLoaderLibrary *library = CCNodeLoaderLibrary::newDefaultCCNodeLoaderLibrary();
//注册解析类
library->registerCCNodeLoader("menu", MenuSceneLoader::loader());
CCBReader *bReader = new CCBReader(library);
MenuScene *menuScene = (MenuScene*)bReader->readNodeGraphFromFile("Menu/ccbi/menu.ccbi");
scene->addChild(menuScene);
return scene;
}
bool MenuScene::init() {
SimpleAudioEngine::sharedEngine()->playBackgroundMusic("music/menuBg.mp3", true);
return true;
}
SEL_MenuHandler MenuScene::onResolveCCBCCMenuItemSelector(CCObject * pTarget, const char* pSelectorName) {
//绑定菜单的点击方法
CCB_SELECTORRESOLVER_CCMENUITEM_GLUE(this, "onStart", MenuScene::onStart);
return NULL;
}
SEL_CCControlHandler MenuScene::onResolveCCBCCControlSelector(CCObject * pTarget, const char* pSelectorName) {
return NULL;
}
void MenuScene::onStart() {
SimpleAudioEngine::sharedEngine()->playEffect("music/button.wav");
CCDirector::sharedDirector()->replaceScene(SelectMapLayer::scene());
CCLog("开始游戏");
}