`

CCNode的属性以及方法的介绍

 
阅读更多

转自:http://blog.csdn.net/wujiabin468/article/details/7870838

CCNode是所有节点的父类包括(CCLayer, CCSprite, CCScene)

以下是CCNode的属性以及方法的介绍(参考:雨松MOMO程序研究院)

float rotation_

节点的旋转角度,如果是图片的话,会看到旋转效果,所以基本上是为屏幕输出服务的。

float scaleX_, scaleY_

节点的缩放比例,X为横向,Y为纵向,当值为1的时候表示原比例,0.5表示缩小一半,2表示放大1倍,如果是图片的话就会看到效果,也是为屏幕输出服务的。

CGPoint position_

节点的坐标,该属性是一个结构体,position_.x是它的横坐标,position_.y是纵坐标,基本上也是要显示到屏幕上才有意义。

float skewX_, skewY_

节点的扭曲角度,类似于Windows画图板中的扭曲功能,X是横向扭曲,Y是纵向扭曲,单位是度数,也是屏显用的。

CGPoint anchorPointInPoints_

节点的锚点坐标,所谓锚点就是当旋转、缩放或是用其它方式操作节点时的参考的基准点,例如图片的锚点在正中心,当放大它的时候,图片就会向四周扩散,当旋转一个锚点在左上角的图片时,图片就会以左上角为轴旋转。

CGPoint anchorPoint_

节点的锚点在节点位置的比例,比如说一个节点的坐标为(0, 0),宽高各为100,那么当它的锚点坐标为(50, 50)的时候,anchorPoint_.x = 0.5,anchorPoint_.y = 0.5。

CGSize contentSize_

节点的宽高,它也是一个结构体,contentSize_.width表示宽,contentSize_.height表示高,它和position_配合可以用来检测碰撞,但需要注意,contentSize_不会因为节点的旋转和缩放而改变大小。

CCCamera *camera_

节点的镜头,cocos2d虽然是2D游戏引擎,但实际上它是通过3D方式绘制2D效果的,因此有镜头存在就不奇怪了。CCCamera也是 cocos2d的一个类,它默认情况下是正对着节点的,距离也是刚好使节点能够以1:1的比例显示到屏幕上,当我们手动修改它的参数后,节点就会呈现出歪 曲或缩放等效果。

NSInteger zOrder_

节点的Z轴,当有多个节点在屏幕显示时,引擎会根据它们Z轴的大小决定绘制顺序,Z轴大的会盖住Z轴小的。

CCArray *children_

重头戏来了,前面说过节点可以有N个子节点,children_就是存储这些子节点地址的变量,节点就是通过它们找到自己的子节点的。children_ 的类型是CCArray,这是cocos2d自己封装的一个数组类,每个元素存储一个子节点地址,它引入了tag机制,当节点有多个子节点时,可以根据它 们的tag找到自己想要的那一个。

CCNode *parent_

另一个重点——节点的父节点。因为树中的每个节点都继承自CCNode,所以用CCNode类型定义父节点是最万无一失的,节点可以通过它找到自己的父节点,因为父节点最多只有一个,所以不需要用数组保存。

NSInteger tag_

节点的标签,主要是帮助其父节点找到自己,因为每个节点的子节点并不一定是唯一的,当需要遍历时可以用该参数做区分,所以兄弟节点的标签尽量不要一样。

Bool isRunning_

表示节点是否在更新逻辑,之前说过,未加入树的节点是不会显示到屏幕上的,其实它的逻辑运算也是一样,就是说没有父节点的节点不会显示,也不会处理自己的 逻辑,它的一切活动都会停止。那么当节点被加入到树中的时候,isRunning_会被自动置为Yes,此时它会开始执行自己的运算,当节点离开树 时,isRunning_会被置为No,如果想在它在树中的时候暂停运算,就需要将它的isRunning_手动置为No。

Bool visible_

和isRunning_对应,用来表示节点是否在绘制,当visible_为No时,节点即使在树中也不会绘制到屏幕上,就相当于隐藏了起来。

以上就是CCNode比较重要的属性,不过我们在开发中直接操作它们的频率并不高,而是通过类中声明的相关方法去改变它们,下面我就来说说CCNode中的方法。

+(id) node

实例化一个CCnode对象,实际上就是封装了alloc、init和autorelease方法。

-(id) init

初始化,将一些数值型的参数归0,缩放比例设为1,指针型的参数设为nil。

-(CCArray*) children

返回对象的children_,即获取全部的子节点。

-(Bool) visible

返回visible_参数,用于检测该节点当前是否被绘制。

-(void) setVisible: (Bool)visible

设置节点的绘制状态,Yes为可见,No为不可见

-(CCNode*) parent

返回节点的parent_,即获取父节点

-(void) setParent: (CCNode*)parent

设置父节点,但实际应用中不要这样修改,因为极易出bug,正确的修改方法会在后面介绍。

-(NSInteger) tag

返回对象的tag_,即获取节点的标签。

-(NSInteger) zOrder

返回对象的zOrder_,即获取Z轴。

-(Bool) isRunning

返回对象的isRunning_,即检测该节点当前是否更新逻辑。

-(float) rotation

返回对象的rotation_,即获取节点的旋转角度。

-(void) setRotation: (float)rotation

设置对象的rotation_值,即旋转节点。

-(CGPoint) position

返回对象的position_,即获取节点的坐标。

-(void) setPosition: (CGPoint)position

设置对象的position_,即更改节点的坐标。

-(CGPoint) anchorPoint

返回对象的anchorPoint_,即获取节点的锚点。

-(void) setAnchorPoint: (CGPoint)anchorPoint

设置对象的anchorPoint_,即修改节点的描点。

-(CGSize) contentSize

返回对象的contentSize_,即获取节点的宽高。

-(void) setContentSize: (CGSize)contentSize

设置对象的contentSize_,即改变节点的宽高。

-(float) skewX

返回对象的skewX_,即获取节点的横向扭曲角度。

-(void) setSkewX: (float)skewX

设置对象的skewX_,即设置节点的横向扭曲角度。

-(float) skewY

返回对象的skewY_,即获取节点的纵向扭曲角度。

-(void) setSkewY: (float)skewY

设置对象的skewY_,即设置节点的纵向扭曲角度。

-(float) scaleX

返回对象的scaleX_,即获取节点的横向缩放比例。

-(void) setScaleX: (float)scaleX

设置对象的scaleX_,即横向缩放节点。

-(float) scaleY

返回对象的scaleY_,即获取节点的纵向缩放比例。

-(void) setScaleY: (float)scaleY

设置对象的scaleY_,即纵向缩放节点。

-(CGRect) boundingBox

返回对象的碰撞框(由坐标和宽高组合而成),这个参数会随着节点的缩放或旋转等操作而改变。

-(CCCamera*) camera

返回对象的camera_,即获取节点的镜头。

-(CCNode*) getChildByTag: (NSInteger) aTag

根据tag_返回children_数组中的某个元素,即根据标签获取节点的某个子节点。

-(void) addChild: (CCNode*)child z: (NSInteger)z tag: (NSInteger)aTag

向children_数组中添加一个CCNode对象,即给节点添加一个子节点,z是子节点的Z轴,aTag是子节点的标签,此方法会将该子节点的parent_指针指向自己,因此这才是设置父节点的正解,比setParent要安全的多。

-(void) addChild: (CCNode*)child z: (NSInteger)z

-(void) addChild: (CCNode*)child

缺省了tag或z的添加子节点方法,缺省值默认为0。

-(void) removeFromParentAndCleanup: (Bool)cleanup

将节点从它的父节点的children_数组中删除,即脱离树,cleanup表示是否将其从内存中清除。

-(void) removeChild: (CCNode*)child cleanup: (Bool)cleanup

将某一节点从children_数组中删除,即删除某一子节点。

-(void) removeChildByTag: (NSInteger)aTag cleanup: (Bool)cleanup

根据tag_删除children_数组中的某个元素,即根据标签删除节点的某个子节点。

-(void) removeAllChildrenWithCleanup: (Bool)cleanup

清空对象的children_数组,即删除所有子节点。

-(void) _setZOrder: (NSInteger)z

设置对象的zOrder_,即改变节点的Z轴。

-(void) reorderChild: (CCNode*)child z: (NSInteger)z

将某节点从子节点队列中取出,并重新重新插入队列,目的是改变其Z轴。

-(void) visit

绘制函数,用来将节点内容(多为图片或文字)显示到屏幕。

-(void) onEnter

相当于一个激活过程,它会在节点被添加到树中的时候执行,使其可以更新自己的逻辑。

-(void) onExit

取消激活,作用是暂停某节点的逻辑更新。

-(CCAction*)runAction: (CCAction*)action

一个会经常被用到的类,作用是执行一种行为,行为模式由参数action决定,CCAction就是上一章提到的行为类,runAction就是联系实体 类和行为类的桥梁。行为执行完毕后,action会自动释放(用了autorelease),所以使用时不用担心内存问题。但需要注意,当 isRunning_为No时,节点执行的行为会暂停,就是说onExit有暂停节点一切行为的功能。

-(void) stopAllActions

停止节点正在执行的所有行为,注意这里是停止,不是暂停,函数执行后节点中的所有行为类实例都将从内存中清除。

-(void) stopAction: (CCAction*)action

停止节点的某一个行为,如果没有执行该行为则什么都不做。

-(void) stopActionByTag: (NSInteger)aTag

根据标签停止节点的某一个行为。

-(CCAction*) getActionByTag: (NSInteger)aTag

根据标签获取某个正在执行的行为。

-(void) schedule: (SEL)selector interval: (ccTime)interval

Schedule是cocos2d中的一个很重要的机制,在作者看来它的实用性仅次于行为类,它的功能和CCAction有相似的地方,都是执行一种行 为;不同之处在于,schedule是通过调用方法来执行逻辑的,而且他它内部还有个计时器,可以每隔一定的时间调用一次,反复循环,直到手动将其停止或 者节点被删除(暂停)。这里的参数selector就是执行的方法,interval是间隔时间(秒),ccTime其实就是一个浮点数。

-(void) unschedule: (SEL)selector: (SEL)selector

停止一个schedule任务,注意这里是停止不是暂停。

-(void) unscheduleAllSeletors

停止所有schedule任务

-(void) resumeSchedulerAndActions

恢复运行节点的行为和schedule。

-(void) pauseSchedulerAndActions

暂停节点的行为和schedule。

分享到:
评论

相关推荐

    Cocos2d手势源码

    在提供的文件列表中,`CCNode.h`和`.m`、`CCLayer.h`和`.m`以及`CCGestureRecognizer.h`和`.m`分别代表了这些类的头文件和实现文件。头文件定义了类的结构、属性和方法,而实现文件包含了具体的函数实现。通过查看和...

    一个简单的基于 CCPhysics 的配色游戏_Objective-C_代码_下载

    一个简单的基于 Cocos2D v3 和 CCPhysics 的配色游戏。 效果展示: ...最后一课 Ball 展示了如何制作具有物理属性的 CCNode 以及如何接受自定义触摸输入。 更多详情、使用方法,请下载后阅读README.md文件

    计算机软件及应用iOS应用程序开发方法与实践PPT学习教案.pptx

    CCNode、CCScene、CCLayer、CCSprite、CCMenu等都是节点,它们可以形成层级结构,通过锚点属性进行定位和变形。锚点是以比例值表示的,可以定义节点变换的参照点。 节点还支持定期更新,允许在每帧或特定时间间隔内...

    cocos2d-x TileList用法

    `startListViewHandler`方法是启动列表视图的处理程序,这里创建了一个`CCUIListView`实例,设置了它的大小、方向以及其他属性。`CCUIListView`是cocos2d-x UI库中的列表组件,它可以处理滑动事件并自动管理子节点的...

    cocos2d-x面试题DOCX文档

    CCNode是场景、层、菜单、精灵等所有节点的父类,它是一个抽象类,没有可视化表示形式,定义了所有node共有的属性和方法。 四、CCAction和CCActionMessager CCAction是动作的基类,主要使用CCFiniteTimeAction有限...

    CocoStudio GUI使用教程

    创建CocoButton时,可以使用Create()静态函数,然后通过相应的方法设置其位置、点击属性以及状态图片等。 总的来说,CocoStudio GUI的使用教程为我们提供了一套完整的流程和方法,使得设计和实现复杂的游戏界面变得...

    使用大纲2

    - `bool init()`:初始化方法,用于设置和配置GameScrollView的基本属性。 - `void scrollViewDidScroll(cocos2d::extension::CCScrollView *view)`:当滚动发生时调用,可以用来获取滚动状态。 - `void ...

    知易 Cocos2D-iPhone 游戏开发教程002

    在Cocos2D-iiPhone中,`CCSprite`类被用来表示精灵,它继承自`CCNode`类,拥有丰富的属性和方法,可以方便地控制精灵的位置、大小、旋转角度等。精灵还可以加载纹理,实现动画效果。 #### 导演(Director) 导演是...

    Cocos2d-x HelloWorld代码部分类图及时序图

    `CCNode`是所有可添加到场景中的对象的基类,它包含了位置、旋转、缩放等属性和更新方法。 在类图中,我们还会看到`CCDirector`,它是负责管理游戏循环、渲染和时间的类。`CCScene`作为场景容器,可以包含一个或多...

    计算机软件及应用iOS应用程序开发方法与实践PPT课件.pptx

    在Cocos2d中,节点(CCNode)是基本的显示单元,像UIKit中的视图一样,它们可以通过构建层次结构来组成复杂的界面。节点包括场景(CCScene)、图层(CCLayer)、精灵(CCSprite)和菜单(CCMenu)等。每个节点都有一...

    Cocos2d-x2.1.5的代码提示包

    它提供了位置、旋转、缩放、透明度等基本属性和方法,以及添加子节点、移除子节点、更新逻辑等功能。 2. **CCFileUtils.lua**:文件操作类,用于读取、写入和处理项目中的资源文件,如图片、音频、配置文件等。...

    Cocos2D游戏之旅(二):主角血条的实现

    这个类通常会包含一个属性来存储当前血量,并且有一个方法用于更新血量。例如: ```cpp class Player : public cocos2d::CCNode { private: int currentHealth; int maxHealth; public: void setHealth(int ...

    cocos2d_api_0.99.zip

    它提供了位置、旋转、缩放等基本属性,以及添加子节点、调度方法等功能。 2. **CCSprite**: 用于显示2D图像,可以是单个图片或者动画序列。它支持透明度、颜色调整、翻转等效果。 3. **CCLayer**: 是场景中的一个...

    cocos2d-x 2.0 的CCListView使用

    CCListView支持设置滚动速度、是否自动回弹等属性。例如,你可以通过`setBounceEnabled`设置是否启用回弹效果,通过`setScrollSpeed`设置滚动速度。 七、性能优化 为了提高性能,确保只在必要时创建和销毁列表项。...

    详解iOS游戏开发中Cocos2D的坐标位置关系

    `tiledMapWithTMXFile:`方法是加载TMX地图的标准方式,它会创建一个表示整个地图的CCTMXTiledMap对象。地图由多个格子组成,每个格子有自己的属性和内容。 接着,通过`[[CCDirector sharedDirector] winSize]`获取...

    cocos2d-x 之 模态对话框

    1. **定义对话框类**:创建一个继承自`CCLayer`的类,比如`DialogLayer`,并添加必要的属性和方法。 2. **设计UI**:在对话框类中,使用`CCNode`的子类(如`CCSprite`、`CCLabelTTF`、`CCButton`)来构建对话框的...

    cocos2d-x API大全中文版2016

    例如,CCNode是所有节点类的基类,它提供了基本的位置、旋转、缩放等属性和方法;CCDirector负责管理游戏的渲染循环和时间步进;CCLayer是游戏逻辑和用户交互的主要承载者;CCSprite用于绘制2D图像;而CCAction则是...

    碰撞子弹类的实现

    在游戏开发中,子弹类的实现是至关重要的,特别是在2D动作或射击游戏中。Cocos2dx是一个基于C++的开源游戏开发...通过学习这个项目,开发者能够更好地理解和应用Cocos2dx的底层机制,以及掌握游戏对象的管理与交互。

    cocos2d-3.0 api文档

    3. CCNode:是所有图形对象的基类,包含位置、缩放、旋转等属性。 4. CCTexture2D:处理图像纹理,为精灵提供图像数据。 三、动作与效果 1. CCAction:定义了一系列操作,如移动、旋转、缩放、淡入淡出等,可以应用...

Global site tag (gtag.js) - Google Analytics