ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Cocos2dx游戏教程(三):“见缝插针”,Cocos2dx核心类介绍

2020-03-17 17:45:55  阅读:353  来源: 互联网

标签:Node 教程 场景 Sprite Layer Scene Director 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有