研究 单例类 AppDelegate 发现其中
virtual bool applicationDidFinishLaunching();
方法中
auto scene = HelloWorld::createScene();
director->runWithScene(scene);
创建了HelloWorld场景
创建一个新的场景,先创建一个类,在 .h文件中进行头文件声明,引入 cocos2d.h 并创建类
#ifndef __TEST_H__
#define __TEST_H__
#include "cocos2d.h"
USING_NS_CC;
class Test : public cocos2d::Layer //继承了 cocos2d的Layer父类
{
public :
static cocos2d::Scene * createScene(); //定义一个静态指针
public:
CREATE_FUNC(Test); //这里使用了 CREATE_FUNC 这个宏,这个宏中,含有create方法,并且可以自动释放内存,使用这个,非常方便。
virtual bool init(); //定义init方法
};
#endif
在 .cpp文件中 引入 Test.h
#include "Test.h"
//创建一个场景
Scene * BallTest::createScene()
{
auto scene = Scene::create();
auto layer = BallTest::create();
scene->addChild(layer);
return scene;
}
//重新 init方法
bool Test::init()
{
if (!Layer::init())
{
return false;
}
return true;
}
在去AppDelegate.cpp文件中 引入 Test.h ,之后更改virtual bool applicationDidFinishLaunching(); 中的场景生成。将HelloWorld改为我们做的Test,即可看到我们刚刚写的场景了,因为没有添加任何Sprite进去,所以,运行起来是黑屏。也算是成功运行了。
遇到的问题:
1、我第一次遇到的是在 AppDelegae.cpp文件中 include 引入 Test.h却发现找不到。是因为在VS2013下,当我们新建项目的时候默认目录是在win32文件夹下,其实应该放在Class文件夹下。在项目中移除,重新再Class文件夹下进行创建即可解决问题。
2、之后在我重新写时候,发现可以引入,但在更改AppDelegate中生成场景的时候,却发现怎么也找不到类,原因是,第二次我copy了HelloWorld中的代码,结果吧头文件中的检测也copy过来,忘记更改,并且HelloWorld的文件没有删除造成的
#ifndef __TEST_H__
#define __TEST_H__
就是这两行代码,copy过来,忘记更改。
刚刚开始学习cocos,难免在文章中,有一些错误,用词不够专业。还请大家指出,进行更改,相互学习。