Cocos2d-x 3.x入门教程(二):Node节点类
千里之行,始于足下
上一篇文章《菜鸟学习Cocos2d-x 3.x——基础概念》中介绍了以下Cocos2d-x的基本结构和一些重要的类,而这里开始对这些重要的类进行单独的介绍与分析。开始吧~~~
Node节点类
Node类是Cocos2d-x中一个非常重要的类,它继承自类Ref,关于Ref类,Ref类是一个内存管理的类,我后续也会总结的,这里就不做多说了。
Node类在Cocos2d-x中有多重要呢?任何需要画在屏幕上的对象都是节点类。最常用的节点类包括场景类(Scene)、布景层类(Layer)、精灵类(Sprite)、菜单类(Menu)。Node类的主要功能如下:
1.每个节点都可以含有子节点;
2.节点都可以含有调度方法(schedule、unschedule等);
3.节点可以含有动作;
由于Node类不自带贴图,其实在屏幕上看不到任何节点类的效果,一般在以下场合下使用Node类:
1.当需要一个父节点来管理很多子节点时,我们就可以添加一个Node类来当做父节点,从而管理这些子节点;
2.定义我们自己的Node类,让Node类为父类,我们可以重写Node类中的一些虚方法,从而实现我们需要的效果,例如:
1).重写初始化的方法和周期性回调方法;
2).重写渲染的绘制方法等。
下面就对Node类中的方法进行分类别的总结一下,对整体有一个印象,由于Cocos2d-x是开源的,我们可以直接阅读它的源代码。
Node类提供的函数
Node类提供的函数主要有以下功能:
1.节点的属性
2.节点的操作
3.动作相关Action
4.定时器相关schedule
5.整合NodeRBGA类
6.查找子节点enumerateChildren
7.渲染顺序zOrder
8.坐标转换
以后在使用Node类,及其子类的时候,能够想起有这些功能就好了,具体对应哪些API函数,可以查阅对应的文档;对应API的使用,后面我会通过具体的实例进行讲解。
相关推荐
-
剖析iOS开发中Cocos2d-x的内存管理相关操作
一,IOS与图片内存 在IOS上,图片会被自动缩放到2的N次方大小.比如一张1024*1025的图片,占用的内存与一张1024*2048的图片是一致的.图片占用内存大小的计算的公式是:长*宽*4.这样一张512*512 占用的内存就是 512*512*4 = 1M.其他尺寸以此类推.(ps:IOS上支持的最大尺寸为2048*2048). 二,cocos2d-x 的图片缓存 Cocos2d-x 在构造一个精灵的时候会使用spriteWithFile或者spriteWithSpriteFrameNa
-
Cocos2d-x触摸事件实例
在玩手机游戏的时候,屏幕接收我们的触摸消息是必不可少的,根据我们的触摸事件,去实现相应的功能,这里我们就来学习一下cocos2d-x中的触摸是怎么实现的.触摸分为单点触摸和多点触摸,先来看单点触摸,就是接收一个点的触摸.代码将实现过程清楚的写了下来,仔细分析代码吧. bool HelloWorld::init() { bool bRet = false; do { CC_BREAK_IF(! CCLayer::init()); //开启触摸 this->setTouchEnabled(true)
-
Cocos2d-x中CCEditBox文本输入框的使用实例
文本输入框这个东西相信大家不论做什么游戏总会用到吧,今天我们就来看看这个东西如何使用.文本输入框同样属于扩展库中的内容,所以你知道怎么做了吧.当用户要在文本框中输入内容,这一系列的过程我们需要一些函数的调用来获得我们想要的东西,包含这些函数的类需要实现CCEditBoxDelegate这个接口,下面我们来看看具体如何使用吧. #ifndef __HELLOWORLD_SCENE_H__ #define __HELLOWORLD_SCENE_H__ #include "cocos2d.h"
-
cocos2dx骨骼动画Armature源码剖析(三)
cocos2dx里骨骼动画代码在cocos -> editor-support -> cocostudio文件夹中,win下通过筛选器,文件结构如下.(mac下没有分,是整个一坨) armature(目录): animation(目录):动画控制相关. CCProcessBase(文件): ProcessBase(类):CCTween和ArmatureAnimation的基类. CCTWeen(文件): Tween(类):控制flash里一个layer的动画. CCArmatureAnimat
-
详解iOS游戏开发中Cocos2D的坐标位置关系
接触Cocos2D有段时间了,今天特意研究了下Cocos2D坐标系中各种位置关系,anchor属性,CCNode坐标和地图坐标转换. 先看一段代码: 复制代码 代码如下: -(id) init { // always call "super" init // Apple recommends to re-assign "self" with the "super" return value if( (self=[s
-
Cocos2d-x中使用CCScrollView来实现关卡选择实例
类似关卡选择的这种功能游戏中经常看到,比如帮助场景,选择关卡,通过滑动的方式选择一些其他的东西等等.今天我们实现关卡的选择是使用CCScrollView这个类.当然还有一些其他的方法,比如使用cocostudio的page view也可以.我先说下整体的思路,CCScrollView这个类是继承自CCLayer的,本身的触摸事件有些bug,所以网上一般将这个层的touch事件处理为false,而使用它的父节点来处理触摸事件,我们也是采用这个做法.先定义一个LevelScene类,将CCScrol
-
cocos2dx骨骼动画Armature源码剖析(一)
cocos2dx从编辑器(cocostudio或flash插件dragonBones)得到xml或json数据,调用类似如下所示代码就可以展示出动画效果 ArmatureDataManager::getInstance()->addArmatureFileInfoAsync( "armature/Dragon.png", "armature/Dragon.plist", "armature/Dragon.xml", this, schedu
-
iOS开发中使用cocos2d添加触摸事件的方法
CCLayer类是用来接收触摸输入的.不过你要首先启用这个功能才可以使用它.你通过设置isTouchEnabled为YES来让层接收触摸事件: 复制代码 代码如下: self.isTouchEnabled = YES; 此项设定最好在init方法中设置.你可以在任何时间将其设置为NO或者YES. 一旦启用isTouchEnabled属性,许多与接收触摸输入相关的方法将会开始被调用.这些事件包括:当新的触摸开始的时候,当手指在触摸屏上移动的时候,还有在用户手指离开屏幕以后.很少会发生触摸事件被取消
-
Cocos2d-x人物动作类实例
我们玩的游戏一般都可以看到精灵的运动,游戏的世界就是一个运动的世界,而所有的这些动作都可以分为一些基本的动作和动作的组合,今天就来学习一下动作类CCAction,首先看一下类之间的继承关系. CCAction类下派生了三个动作类,执行动作的类是CCNode以及它的子类,通过函数runAction()来执行动作,其中CCFiniteTimeAction之下是常用的瞬时动作和延时动作.动作从本质上来说就是改变节点的属性,瞬时动作就是改变这些属性不需要时间,瞬时就完成了,而延时动作改变这些属性需要一些
-
Cocos2d-x 3.x入门教程(一):基础概念
前言 接触游戏开发时间不长,之前一直都是写Lua,写Lua肯定是没有什么发展的啦,至少你要会写的.写客户端,肯定要看看Cocos2d-x了.从今天起,正式开始Cocos2d-X的学习之旅. 之前一直都是做C++开发的,转过来看Cocos2d-x,从语言上来说,没有多少问题.对于我来说,Cocos2d-x就是一个类库,就类似于MFC.ATL和QT一样,就是一个游戏类库,而我就按照学习类库使用的方法去学习Cocos2d-x.这篇文章叫基础概念,但是还是从整体来说说Cocos2d-x这个类库的. 基础
-
cocos2dx骨骼动画Armature源码剖析(二)
上篇文章从总体上介绍了cocos2dx自带的骨骼动画,这篇文章介绍一下导出的配置数据各个字段的含义(也解释了DragonBone导出的xml数据每个字段的含义). skeleton节点 <skeleton name="Dragon" frameRate="24" version="2.2"> name:flash文件名字. frameRate:flash帧率. version:dragonbones版本号. armatures节点 首
-
Cocos2d-x中调用Lua及HelloWorld.lua源码分解
Lua脚本,以前我不知道它有多强大,但是当我做了1年的手机网游之后,起码我发现了,更新客户端是一件很恐怖的事情(会导致大量玩家的流失,以及有一个漫长并且惊心动魄的审核过程),太扯了.于是,如果可以只更新脚本,那就不需要玩家重新下载客户端了,直接在线更新,嗯嗯,虽然我发现了这个,但是还没有实现.噗,代码写烂了,不好改. 所以啊,我已经做好准备了,如果下次用cocos2d-x开发,lua不可少啊~! 看看官方的例子吧,先来AppDelegate.cpp的applicationDidFinis
-
Cocos2d-x中实现弹出对话框示例
在游戏中我们经常会看到弹出一个对话框让我们进行选择,今天我们就在cocos2dx中实现这个对话框.对话框说白了也是一个层,当我们点击某一个按钮的时候这个层被加进了当前的场景中,同时场景中的其他的层都是不可点击的,这个时候就涉及到触摸的优先级的一些问题,当然有些时候你也可以根据自己的需要让其他的层也可以点击,但是道理都是一样的,学会了这个其他的按照自己的要求去实现吧.下面我将弹出层单独分装成一个类,供我们调用. /*对话框场景类的头文件*/ #ifndef _POP_SCENE_H_ #defin
随机推荐
- 详解ASP.NET Core 中的多语言支持(Localization)
- Bootstrap和Angularjs配合自制弹框的实例代码
- 如何修复受损的Windows XP用户帐户很不错
- 详解使用asp.net mvc部分视图渲染html
- Bootstrap入门书籍之(零)Bootstrap简介
- Visual Studio 2013更新内容简介
- asp.net保存网上图片到服务器的实例
- asp.net web页面自定义分页控件使用详解
- 作为PHP程序员应该了解MongoDB的五件事
- python 实现删除文件或文件夹实例详解
- Python 爬虫之超链接 url中含有中文出错及解决办法
- JavaScript中数据结构与算法(五):经典KMP算法
- C++中关于Crt的内存泄漏检测的分析介绍
- ERROR CODE: 1175 YOU ARE USING SAFE UPDATE MODE AN
- jQuery中contents()方法用法实例
- 金山反病毒20041229_日报
- Android App中ListView仿QQ实现滑动删除效果的要点解析
- c#图片缩放图片剪切功能实现(等比缩放)
- 简单谈谈PHP面向对象之标识对象
- Angular实现较为复杂的表格过滤,删除功能示例