cocos2d-x 自定义一个场景

来源:互联网 发布:银行的软件开发 编辑:程序博客网 时间:2024/06/06 03:20

柒哥原创 ,欢迎转载,转载请在明显处注明! 谢谢。

原文地址:点击打开链接


我们都知道,布景是放在场景里面进行显示的。

 

头文件MyLayer.h

#ifndef __MENUSCENE_H__#define __MENUSCENE_H__#include "cocos2d.h"#include "SimpleAudioEngine.h"#include "cocos-ext.h"  USING_NS_CC_EXT;  using namespace cocos2d;class MenuScene:public cocos2d::CCLayer{public:virtual bool init();static CCScene* scene();CREATE_FUNC(MenuScene);};#endif 

上面是我自定义布景的 MenuScene 类,通过这个布景生成场景。这个类要继承自cocos2d::CCLayer,这是一个布景类,构造函数和析构函数都是编译器自动声称的,覆盖父类的init方法。定义一个静态方法,将布景变为场景

CPP文件

#include "MenuScene.h"#include "cocos-ext.h"  USING_NS_CC_EXT;  using namespace cocos2d;CCScene* MenuScene::scene(){    CCScene * scene = NULL;    do     {        scene = CCScene::create();        CC_BREAK_IF(! scene);//需要定义CREATE_FUNC(MenuScene)宏 ,才有create方法        MenuScene *menu = MenuScene::create();//该create会调到init()        CC_BREAK_IF(!menu);        scene->addChild(menu);//将我们自定义的布景加入到场景    } while (0);//外界只要调用该方法就可以得到该scene    return scene; }bool MenuScene::init(){    bool bRet = false;    do     {        CC_BREAK_IF(! CCLayer::init());//添加一个背景CCSprite * menuBackground = CCSprite::create("menubg.png");CCSize menuBgSize = menuBackground->getContentSize();CCSize winSize = CCDirector::sharedDirector()->getWinSize();menuBackground->setScale(0.4f);menuBackground->setPosition(ccp(350,200));this->addChild(menuBackground,0);        bRet = true;    } while (0);    return bRet;}

使用自定义场景:   

void HelloWorld::Go(CCObject *p)  {      CCScene *s=MyLayer::scene();      CCDirector::sharedDirector()->replaceScene(s);  }  

调用框架流程:

HelloWorld::Go --> MyLayer::scene() --> MenuScene::create() --> MenuScene::init() -->初始化布景