自定义场景类,说Scene方法未定义。。。

初学cocos2dx,自定义了一个场景类MyLayer,想测下场景间的切换。
CCScene* scene = MyLayer::scene(); (这说scene未定义。。。报错)
CCDirector::sharedDirector()->replaceScene(scene);

MyLayer的声明:
class MyLayer: public CCLayer {

public:
MyLayer(void);
virtual ~MyLayer(void);
static cocos2d::CCScene* scene();
virtual bool init();
CREATE_FUNC(MyLayer);
};
scene方法:
cocos2d::CCScene* MyLayer::scene() {
CCScene* scene = NULL;

do {
	scene = CCScene::create();
	CC_BREAK_IF(!scene);

	MyLayer* myLayer = MyLayer::create();
	CC_BREAK_IF(!myLayer);
	scene->addChild(myLayer);

} while (0);

return scene;

}
请教大神们。。。哪儿出的问题呢?

建议别用scene()这个函数名了 你用的是cocos2d 2.0以上版本,最好都用create(),试试看

— Begin quote from ____

sky无限 发表于 2013-2-18 17:52 url

不至于吧,错误截图出来看看!

— End quote

924
我是在Eclipse下编译运行的。

是不是没把cpp文件加到mk里面?

问题解决了。。。
是我头文件里声明了一个默认的构造函数,cpp文件中没去实现。头文件中删除了MyLayer()的声明就行了!

程序终于可以如愿跑起来了,第一次在Eclipse下新建新的C++类,确实没注意到需要修改mk文件,太粗心了,以前也没做个这方面的事。希望有新手看到这帖子能吸取教训啊!:dizzy:

再次感谢回本帖的所有人!谢谢!

看看你mllayer.h文件最顶,是不是undefined 里面的内容和其他的类重复了?!?
我是XCODE编译的,但是但是你的问题应该是这个问题!
你的.h文件里面最顶层应该和下面的代码差不多的,如果里面的myscene和别的重复了就会出现问题了!
#ifndef HelloWorld__MyScene
#define HelloWorld__MyScene

#endif

层能是空的么 你层上什么都没有啊

— Begin quote from ____

MR差不多 发表于 2013-2-18 10:43 url

层能是空的么 你层上什么都没有啊

— End quote

空的什么意思啊- -?我MyLayer类的init方法是实现了的。。。只是没贴出来。。。

尝试去掉do~ while看看
CCScene* scene = CCScene::create();
MyLayer* myLayer = MyLayer::create();
scene->addChild(myLayer);
return scene;

— Begin quote from ____

sky无限 发表于 2013-2-18 15:50 url

尝试去掉do~ while看看
CCScene* scene = CCScene::create();
MyLayer* myLayer = MyLayer::create();

— End quote

还是不行。。。{:soso_e109:}
提示的错误就是scene方法未定义。。。

不至于吧,错误截图出来看看!

顶一下。。。还未解决。。。

建议别用scene()这个函数名了 你用的是cocos2d 2.0以上版本,最好都用create(),试试看

是不是没把cpp文件加到mk里面?

看看你mllayer.h文件最顶,是不是undefined 里面的内容和其他的类重复了?!?
我是XCODE编译的,但是但是你的问题应该是这个问题!
你的.h文件里面最顶层应该和下面的代码差不多的,如果里面的myscene和别的重复了就会出现问题了!
#ifndef HelloWorld__MyScene
#define HelloWorld__MyScene

#endif

尝试去掉do~ while看看
CCScene* scene = CCScene::create();
MyLayer* myLayer = MyLayer::create();
scene->addChild(myLayer);
return scene;

不至于吧,错误截图出来看看!