创建一个cocos2d-x工程添加一个自定义Scene并显示

#include "cocos2d.h"

class RunScene :public cocos2d::CCLayer
{
public:

	virtual bool init();
	static cocos2d::CCScene* scene();
	LAYER_NODE_FUNC(RunScene);//此函数名需要根据具体的版本来定,不同版本函数名不一样,可以直接根据例子程序来查看当前此函数的函数名是啥,o(∩_∩)o 哈哈
};

 创建的Scene头文件

 1 // TollgateScene.cpp
 2 
 3 #include "RunScene.h"
 4 #include <CCLabelTTF.h>
 5 using namespace cocos2d;
 6 
 7 CCScene* RunScene::scene()
 8 {
 9         CCScene * scene = NULL;
10     do 
11     {
12         // 'scene' is an autorelease object
13         scene = CCScene::node();
14         CC_BREAK_IF(! scene);
15 
16         // 'layer' is an autorelease object
17         RunScene *layer = (RunScene *)RunScene::node();
18         CC_BREAK_IF(! layer);
19 
20         // add layer as a child to scene
21         scene->addChild(layer);
22     } while (0);
23 
24     // return the scene
25     return scene;
26 }
27 
28 bool RunScene::init()
29 {
30      //CC_BREAK_IF(! CCLayer::init());
31     CCLabelTTF* label=CCLabelTTF::labelWithString("hellodddddddd","AppleGothic",32);
32      // Get window size and place the label upper. 
33         CCSize size = CCDirector::sharedDirector()->getWinSize();
34         label->setPosition(ccp(size.width / 2, size.height - 20));
35    // CCTMXTiledMap* map = CCTMXTiledMap::tiledMapWithTMXFile("maps/leve1.tmx");
36     //this->addChild(map,1);
37     this->addChild(label,1);
38     return true;
39 }

 

在AppDelegate中添加的代码:

CCScene *rScene=RunScene::scene();
// run
pDirector->runWithScene(rScene);

 

刚开始自己创建的Scene的init一直没有执行,找了半天的原因,发现在定义的Scene中没有调用LAYER_NODE_FUNC方法,查资料才发现要想调用init方法需要手动调用此方法,加了次方法,自定义的Scene果然显示出来了,向成功又迈进了一步,come on!!!

 

posted @ 2013-09-04 22:19  木木小强  阅读(730)  评论(0编辑  收藏  举报