Cocos2dx游戏教程(三):“见缝插针”,Cocos2dx核心类介绍
作者:互联网
前面给大家介绍了图片精灵的加载和相关核心类的描述,聪明的小伙伴们应该都已经了解了相关的使用方式吧,这次呢就详细的介绍下几个核心类的作用,使用方式和框架结构,巩固一下。
序、框架结构图
我们看一下将要实现的游戏的示意图,能看出哪些是场景,哪些是精灵么,还有文字和菜单按钮哦(后面介绍)
如下图所示,上章的Director,Node,Scene,Layer,Sprite结构图如下。
Node类是绝大部分类的父类,如Scene、Layer、Sprite等等的父类都是Node。
一、Director导演类
Director俗称导演类,Director是Cocos2d-X的核心。
我们在开发过程中可以通过单例模式获取导演对象:
auto director= Director::getInstance();
还比如,我们想获取屏幕可视区的大小可以使用
auto visibleSize = Director::getInstance()->getVisibleSize();
屏幕大小可以使用
auto winSize = Director::getInstance()->getWinSize();
说道这大家肯定也想起了前面切换场景吧,这也是导演类所处理的,对于切换场景,我们来看一下几种方法
1、初始化游戏场景
该方法有且仅在启动游戏的时候会调用,只此一次,用来初始化游戏显示的第一个场景。
runWithScene( Scene *scene );
2、将一个场景压入栈中,并运行下一场景
pushScene( Scene scene );
3、释放当前场景,代码执行场景中弹出栈顶的场景,如果栈为空,直接结束应用。和PushScene结对使用。
popScene()
4.直接替换场景,当前场景被释放,这是切换场景时最常用的方法。
replaceScene( Scene *scene );
当然Director还有好多用法,大家可以去参考源代码或者运行Cocos2dx自带的例子学习哈。
二、Scene场景类
Scene是继承与Node类的。场景就像是一个容器,将不同的布景层(Layer)组合在一起,方便管理。
一个游戏会有很多的场景,比如,主界面,游戏界面,载入界面等等都是一个场景。而每一个场景都是由多个图层组合在一起,形成一个完整的游戏画面。
场景的创建如下
auto scene = Scene::create();
三、Layer布景层类
Layer继承于Node。Layer不仅继承了Node的所有操作,还附加触控、重力加速度计、支持键盘输入的事件代理。
一个布景层(Layer)可以包含多个元素,如标签(Label)、菜单(Menu)、精灵(Sprite)等等。
注意:Layer的锚点默认为(0,0),即左下角。并且忽略锚点的设置,即使你setAnchorPoint了锚点,Layer的锚点也不会改变,依然是(0,0)。
布景层创建如下
auto layer = HelloWorld::create();
我们上面创建了场景,那么我们怎么将布景层加入场景呢
scene->addChild(layer);
四、Sprite精灵类
Sprite继承于Node,简单一点,其实就是一个2D的图片,一般加载在Layer上。默认锚点为(0.5,0.5)居中哦。
Sprite不仅继承了Node,还继承了纹理协议接口TextureProtocol。
如何创建一个精灵呢
auto sprite = Sprite::create("filename");
然后将精灵加入布景层
layer->addChild(sprite);
五、总结
一个简单的游戏场景的建立离开不了上面几个核心类的共同作用,总体来说我们需要
导演指挥->创建一个场景->创建一个层加入场景->创建游戏元素加入层
到这里应该对核心的操作有些了解了吧,后续将会结合游戏例子介绍相关的操作,遇到其他知识点穿插着讲哈,希望和大家共同进步!!
标签:Node,教程,场景,Sprite,Layer,Scene,Director,Cocos2dx,见缝插针 来源: https://blog.csdn.net/slaron/article/details/104763635