Cocos2d-x入门之旅[4]场景
我们之前讲了场景图(Scene Graph) 的概念,继续之前你先要知道
- 场景图决定了场景内节点对象的渲染顺序
- 渲染时 z-order 值大的节点对象会后绘制,值小的节点对象先绘制
HelloWorld#
你还记得HelloWorld场景是如何启动的么?回看我们工程里的AppDelegate.cpp,滚到applicationDidFinishLaunching()
的尾部:
// create a scene. it's an autorelease object auto helloWorldscene = HelloWorld::createScene(); // run director->runWithScene(helloWorldscene);
Ctrl+鼠标左键 点选createScene()
查看定义,可以看到这个函数在HelloWorldScnen.h内声明,在HelloWorldScnen.cpp内定义
// HelloWorldScnen.h static cocos2d::Scene* createScene(); // HelloWorldScnen.cpp Scene* HelloWorld::createScene() { return HelloWorld::create(); }
我们可以通过该函数获取一个HelloWorld场景对象
之后就是场景的初始化,菜单,精灵等对象的Set都在这里进行
bool HelloWorld::init() { ... }
最后我们看到一个回调函数
void HelloWorld::menuCloseCallback(Ref* pSender) { //Close the cocos2d-x game scene and quit the application Director::getInstance()->end(); }
C++基础差的同学可能还不理解回调的概念,但你只需要知道,这个函数实现了:HelloWorld场景内点击关闭按可钮关闭窗口 的功能,就行了、
SecondScene#
现在我们对着HelloWorld的代码来创建一个SecondScene
和HelloWorld一样,首先我们需要一份SecondScene.h存放声明,然后是一份SecondScene.cpp存放定义
注意VS内新建文件时,一定要保存到Class文件夹内,不然你是不能直接include“xxxxxx”的(万恶的VS默认保存路径不是Class)
修改到项目目录下的Class
SecondScene.h#
首先是套一层宏保护到头尾
#ifndef __SECOND_SCENE_H__ #define __SECOND_SCENE_H__ #endif // __SECOND_SCENE_H__
然后