文档章节

CCNode类详解

 千山万水
发布于 2014/09/29 14:22
字数 2390
阅读 88
收藏 2
点赞 0
评论 0

1 CCNode是cocos2d-x中一个很重要的类,CCNode是场景、层、菜单、精灵等的父类。而我们在使用cocos2d-x时,接触最多的就是场景、层、菜单、精灵等。所以有必要先弄懂CCNode类

2 CCObject类是cocos2d-x中所有对象的基类,CCObject封装了对象的引用计数和自动释放功能,

 3 因为场景、层、精灵、菜菜单是CCNode的子类,所以在使用它们时,有些方法来自CCNode,下面解释了CCNode中常用的方法



//初始化CCNode  
bool init(); 
 
//生成CCNode对象  
CCNode * create(void); 
 
//获取描述字符串 便于调试  
const char* description(void); 
 
//设置节点Z轴顺序 当有多个节点在Z轴显示时 引擎会根据它们Z轴的大小决定绘制顺序 Z轴大的会覆盖Z轴小的  
void setZOrder(int zOrder); 
void _setZOrder(int z); 
//获取节点Z轴顺序  
int getZOrder(); 
 
//设置OpenGL Z轴顶点  
void setVertexZ(float vertexZ); 
//获取OpenGL Z轴顶点  
float getVertexZ(); 
 
//设置节点X轴比例因子  
void setScaleX(float fScaleX); 
//获取节点X轴比例因子  
float getScaleX(); 
 
//设置节点Y轴比例因子  
void setScaleY(float fScaleY); 
//获取节点Y轴比例因子  
float getScaleY(); 
 
//设置节点比例因子 同时设置X轴、Y轴  
void setScale(float scale); 
//获取节点比例因子 必须X轴、Y轴比例因子相等  
float getScale(); 
 
//设置节点(x, y)在OpenGL中的坐标   
void setPosition(const CCPoint &position); 
//获取节点(x, y)在OpenGL中的坐标   
const CCPoint& getPosition(); 
 
//设置节点(x, y)在OpenGL中的坐标  
void setPosition(float x, float y); 
//获取节点(x, y)在OpenGL中的坐标  
void getPosition(float* x, float* y); 
 
//设置节点在OpenGL中的X坐标  
void setPositionX(float x); 
//获取节点在OpenGL中的X坐标  
float getPositionX(void); 
//设置节点在OpenGL中的Y坐标  
void setPositionY(float y); 
//获取节点在OpenGL中的Y坐标  
float getPositionY(void); 
 
//设置X轴的倾斜角度  
void setSkewX(float fSkewX); 
//获取X轴的倾斜角度  
float getSkewX(); 
 
//设置Y轴的倾斜角度  
void setSkewY(float fSkewY); 
//获取Y轴的倾斜角度  
float getSkewY(); 
 
//设置节点锚点的位置  
void setAnchorPoint(const CCPoint& anchorPoint); 
//获取节点锚点的位置  
const CCPoint& getAnchorPoint(); 
 
//设置节点的尺寸  
void setContentSize(const CCSize& contentSize); 
//获取节点的尺寸  
const CCSize& getContentSize(); 
 
//设置节点是否可见  
void setVisible(bool visible); 
//获取节点是否可见  
bool isVisible(); 
 
//设置节点自转角度  
void setRotation(float fRotation); 
//获取节点自转角度  
float getRotation(); 
 
//zOrder 当有多个节点在Z轴显示时 引擎会根据它们Z轴的大小决定绘制顺序 Z轴大的会覆盖Z轴小的  
//添加子节点 zOrder默认为0  
void addChild(CCNode * child); 
//添加子节点  
void addChild(CCNode * child, int zOrder); 
//添加子节点 指定节点zOrder和节点tag  
void addChild(CCNode* child, int zOrder, int tag); 
 
//通过tag名称获取节点  
CCNode * getChildByTag(int tag); 
//获取所有子节点  
CCArray* getChildren(); 
//获取子节点数目  
unsigned int getChildrenCount(void); 
 
//设置子节点的父节点  
void setParent(CCNode* parent); 
//获取子节点的父节点  
CCNode* getParent(); 
 
//从父节点中删除当前子节点  
void removeFromParent(); 
//从父节点中删除当前子节点 如果Cleanup为true则删除当前节点的所有动作及回调函数  
void removeFromParentAndCleanup(bool cleanup); 
//从父节点中删除当前子节点 如果Cleanup为true则删除当前节点的所有动作  
void removeChild(CCNode* child); 
//从父节点中删除当前子节点 并指定Cleanup  
void removeChild(CCNode* child, bool cleanup); 
//通过tag名称移除节点  
void removeChildByTag(int tag); 
//通过tag名称移除节点并指定Cleanup  
void removeChildByTag(int tag, bool cleanup); 
//移除所有子节点  
void removeAllChildren(); 
//移除所有子节点 并指定Cleanup  
void removeAllChildrenWithCleanup(bool cleanup); 
 
//重新设定节点的zOrder  
void reorderChild(CCNode * child, int zOrder); 
 
//重新排序所有子节点  
void sortAllChildren(); 
 
//获取节点的tag名称  
int getTag(); 
//设置节点的tag名称  
void setTag(int nTag); 
 
//获取节点的CCCamera摄像机 cocos2d-x是通过3D方式绘制2D效果  
CCCamera* getCamera(); 
 
//判断当前节点是否在运行  
bool isRunning(); 
 
//节点开始进入舞台时的回调事件  
void onEnter(); 
//节点进入舞台时的回调事件  
void onEnterTransitionDidFinish(); 
//节点离开舞台时的回调事件  
void onExit(); 
 
//停止所有运行的动作和回调函数  
void cleanup(void); 
 
//绘制节点  
void draw(void); 
 
//递归visit子节点并重绘  
void visit(void); 
 
//返回节点对象的矩形框(由坐标宽高组成)  
CCRect boundingBox(void); 
 
//设置CCActionManager对象被所有动作使用  
void setActionManager(CCActionManager* actionManager); 
//获取被所有动作使用的CCActionManger  
CCActionManager* getActionManager(); 
 
//执行动作  
CCAction* runAction(CCAction* action); 
//停止动作  
stopAction(CCAction* action); 
 
 
//停止所有动作  
void stopAllActions(void); 
 
//通过tag名称获取动作  
CCAction* getActionByTag(int tag); 
 
//获取正在运行的动作数量  
unsigned int numberOfRunningActions(void); 
 
//定义一个定时器  
void schedule(SEL_SCHEDULE selector, float interval, unsigned int repeat, float delay); 
//定义一个定时器  
void schedule(SEL_SCHEDULE selector, float interval); 
 
//取消一个定时器  
void unschedule(SEL_SCHEDULE selector); 
//取消所有定时器  
void unscheduleAllSelectors(void); 
 
//暂停所有定时器和动作  
void pauseSchedulerAndActions(void); 
//恢复所有定时器和动作  
void resumeSchedulerAndActions(void); 

//初始化CCNode
bool init();

//生成CCNode对象
CCNode * create(void);

//获取描述字符串 便于调试
const char* description(void);

//设置节点Z轴顺序 当有多个节点在Z轴显示时 引擎会根据它们Z轴的大小决定绘制顺序 Z轴大的会覆盖Z轴小的
void setZOrder(int zOrder);
void _setZOrder(int z);
//获取节点Z轴顺序
int getZOrder();

//设置OpenGL Z轴顶点
void setVertexZ(float vertexZ);
//获取OpenGL Z轴顶点
float getVertexZ();

//设置节点X轴比例因子
void setScaleX(float fScaleX);
//获取节点X轴比例因子
float getScaleX();

//设置节点Y轴比例因子
void setScaleY(float fScaleY);
//获取节点Y轴比例因子
float getScaleY();

//设置节点比例因子 同时设置X轴、Y轴
void setScale(float scale);
//获取节点比例因子 必须X轴、Y轴比例因子相等
float getScale();

//设置节点(x, y)在OpenGL中的坐标
void setPosition(const CCPoint &position);
//获取节点(x, y)在OpenGL中的坐标
const CCPoint& getPosition();

//设置节点(x, y)在OpenGL中的坐标
void setPosition(float x, float y);
//获取节点(x, y)在OpenGL中的坐标
void getPosition(float* x, float* y);

//设置节点在OpenGL中的X坐标
void setPositionX(float x);
//获取节点在OpenGL中的X坐标
float getPositionX(void);
//设置节点在OpenGL中的Y坐标
void setPositionY(float y);
//获取节点在OpenGL中的Y坐标
float getPositionY(void);

//设置X轴的倾斜角度
void setSkewX(float fSkewX);
//获取X轴的倾斜角度
float getSkewX();

//设置Y轴的倾斜角度
void setSkewY(float fSkewY);
//获取Y轴的倾斜角度
float getSkewY();

//设置节点锚点的位置
void setAnchorPoint(const CCPoint& anchorPoint);
//获取节点锚点的位置
const CCPoint& getAnchorPoint();

//设置节点的尺寸
void setContentSize(const CCSize& contentSize);
//获取节点的尺寸
const CCSize& getContentSize();

//设置节点是否可见
void setVisible(bool visible);
//获取节点是否可见
bool isVisible();

//设置节点自转角度
void setRotation(float fRotation);
//获取节点自转角度
float getRotation();

//zOrder 当有多个节点在Z轴显示时 引擎会根据它们Z轴的大小决定绘制顺序 Z轴大的会覆盖Z轴小的
//添加子节点 zOrder默认为0
void addChild(CCNode * child);
//添加子节点
void addChild(CCNode * child, int zOrder);
//添加子节点 指定节点zOrder和节点tag
void addChild(CCNode* child, int zOrder, int tag);

//通过tag名称获取节点
CCNode * getChildByTag(int tag);
//获取所有子节点
CCArray* getChildren();
//获取子节点数目
unsigned int getChildrenCount(void);

//设置子节点的父节点
void setParent(CCNode* parent);
//获取子节点的父节点
CCNode* getParent();

//从父节点中删除当前子节点
void removeFromParent();
//从父节点中删除当前子节点 如果Cleanup为true则删除当前节点的所有动作及回调函数
void removeFromParentAndCleanup(bool cleanup);
//从父节点中删除当前子节点 如果Cleanup为true则删除当前节点的所有动作
void removeChild(CCNode* child);
//从父节点中删除当前子节点 并指定Cleanup
void removeChild(CCNode* child, bool cleanup);
//通过tag名称移除节点
void removeChildByTag(int tag);
//通过tag名称移除节点并指定Cleanup
void removeChildByTag(int tag, bool cleanup);
//移除所有子节点
void removeAllChildren();
//移除所有子节点 并指定Cleanup
void removeAllChildrenWithCleanup(bool cleanup);

//重新设定节点的zOrder
void reorderChild(CCNode * child, int zOrder);

//重新排序所有子节点
void sortAllChildren();

//获取节点的tag名称
int getTag();
//设置节点的tag名称
void setTag(int nTag);

//获取节点的CCCamera摄像机 cocos2d-x是通过3D方式绘制2D效果
CCCamera* getCamera();

//判断当前节点是否在运行
bool isRunning();

//节点开始进入舞台时的回调事件
void onEnter();
//节点进入舞台时的回调事件
void onEnterTransitionDidFinish();
//节点离开舞台时的回调事件
void onExit();

//停止所有运行的动作和回调函数
void cleanup(void);

//绘制节点
void draw(void);

//递归visit子节点并重绘
void visit(void);

//返回节点对象的矩形框(由坐标宽高组成)
CCRect boundingBox(void);

//设置CCActionManager对象被所有动作使用
void setActionManager(CCActionManager* actionManager);
//获取被所有动作使用的CCActionManger
CCActionManager* getActionManager();

//执行动作
CCAction* runAction(CCAction* action);
//停止动作
stopAction(CCAction* action);


//停止所有动作
void stopAllActions(void);

//通过tag名称获取动作
CCAction* getActionByTag(int tag);

//获取正在运行的动作数量
unsigned int numberOfRunningActions(void);

//定义一个定时器
void schedule(SEL_SCHEDULE selector, float interval, unsigned int repeat, float delay);
//定义一个定时器
void schedule(SEL_SCHEDULE selector, float interval);

//取消一个定时器
void unschedule(SEL_SCHEDULE selector);
//取消所有定时器
void unscheduleAllSelectors(void);

//暂停所有定时器和动作
void pauseSchedulerAndActions(void);
//恢复所有定时器和动作
void resumeSchedulerAndActions(void);



© 著作权归作者所有

共有 人打赏支持
粉丝 24
博文 141
码字总数 138116
作品 0
厦门
Cocos2D-x权威指南:核心类成员CCNode

节点类(CCNode)是Cocos2D-x中的主要类,继承自CCObject。继承关系如图3-2所看到的。 不论什么须要画在屏幕上的对象都是节点类。 最经常使用的节点类包含场景类(CCScene)、布景层类(CCL...

技术mix呢 ⋅ 2017/11/08 ⋅ 0

cocos2d-X学习之主要类介绍:节点CCNode

首先是类结构: 可以看到CCNode 几乎是游戏中处理的大部分类的父类,其主要有以下函数: virtual int getZOrder (void) //获取节点的顺序 virtual const CCPoint & getPosition (void) //获取...

andyhe91 ⋅ 2014/10/11 ⋅ 0

游戏开发记录120811:cocos2d-x引擎学习---目录结构及主要类

1-Cocos2d-x目录结构 Cocos2d-x的目录结构如下: 目录的具体结构介绍如下: Box2D:物理引擎Box2D的相关源文件 Chipmunk:物理引擎chipmunk的相关源文件 cocos2dx:cocos2d-x引擎的核心部分,...

Matrix4X4 ⋅ 2012/08/12 ⋅ 0

cocos2d-x学习笔记18:内存管理01:概述

一、概述 cocos2d-x最初移植自cocos2d的objective C版本。因此,在内存管理上,使用了和NSObject类似的引用计数器方法,相关接口放置在CCObject类中。 二、引用计数器——手动管理内存 CCOb...

技术小胖子 ⋅ 2017/11/14 ⋅ 0

CCSpawn 同步动作

作为动作的子类,它的对象可以被任何CCNode对象执行。该类与序列动作CCSequence的区别就是,它使得CCNode对象可以同时执行若干个动作。 注意: 同步动作中要求其动作对象都必须是可以同时执行...

ithresh ⋅ 2014/04/23 ⋅ 0

【Cocos2d-x-基础概念】Director Scene Layer and Sprite

Director Scene Layer and Sprite Scenes scene(由CCScene类实现)多多少少是一个相对独立的app工作流。有些人把它称为“screens”或者“stages”。你的app可以由多个scene,但一次只能有一个...

王选易 ⋅ 2013/05/18 ⋅ 0

Cocos2Dx之调度器

有的时候我们还需要使用其他的时间触发机制,比如一个重复性动作2秒之后再执行,并且重复间隔为3秒。怎么实现呢? 通过前面的分析,我们知道每个帧间隔时间到期后,都会调用CCDirector的mai...

开源中国驻成都办事处 ⋅ 2014/07/09 ⋅ 1

Cocos2d-x2.0 RotateWorldTest深入分析

[Cocos2d-x相关教程来源于红孩儿的游戏编程之路CSDN博客地址:http://blog.csdn.net/honghaier] 红孩儿Cocos2d-X学习园地QQ2群:44208467加群写:Cocos2d-x 红孩儿Cocos2d-X学习园地QQ群:2...

长平狐 ⋅ 2013/03/19 ⋅ 0

cocos2dx进阶学习之坐标转换

在cocos2dx中,有四种坐标系 GL坐标系:左下为原点,x轴向右,y轴向上 UI坐标系:左上为原点,x轴向右,y轴向下 世界坐标系:与GL坐标系相同 本地坐标系:是节点(CCNode)的坐标系,原点在节...

霄霄月月 ⋅ 2014/03/31 ⋅ 0

跟着石头哥哥学cocos2d-x(二)---2dx跨平台编译以及2dx概述

ps:目录是2dx概述!!! 上一节中我大概简述了2dx引擎环境的搭建,在交叉编译一概而过,这一节我将详细说下这方面的内容, 有人提出不用cygwin来编译,用adt毫无压力,额 我只想说 adt从我搞...

石头哥哥 ⋅ 2013/11/13 ⋅ 8

没有更多内容

加载失败,请刷新页面

加载更多

下一页

笔试题之Java基础部分【简】【一】

基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io 的语法,虚拟机方面的语法,其他 1.length、length()和size() length针对...

anlve ⋅ 18分钟前 ⋅ 1

table eg

user_id user_name full_name 1 zhangsan 张三 2 lisi 李四 `` ™ [========] 2018-06-18 09:42:06 星期一½ gdsgagagagdsgasgagadsgdasgagsa...

qwfys ⋅ 43分钟前 ⋅ 0

一个有趣的Java问题

先来看看源码: public class TestDemo { public static void main(String[] args) { Integer a = 10; Integer b = 20; swap(a, b); System.out......

linxyz ⋅ 47分钟前 ⋅ 0

十五周二次课

十五周二次课 17.1mysql主从介绍 17.2准备工作 17.3配置主 17.4配置从 17.5测试主从同步 17.1mysql主从介绍 MySQL主从介绍 MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主...

河图再现 ⋅ 今天 ⋅ 0

docker安装snmp rrdtool环境

以Ubuntu16:04作为基础版本 docker pull ubuntu:16.04 启动一个容器 docker run -d -i -t --name flow_mete ubuntu:16.04 bash 进入容器 docker exec -it flow_mete bash cd ~ 安装基本软件 ......

messud4312 ⋅ 今天 ⋅ 0

OSChina 周一乱弹 —— 快别开心了,你还没有女友呢。

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享吴彤的单曲《好春光》 《好春光》- 吴彤 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :小萝莉街上乱跑,误把我认错成...

小小编辑 ⋅ 今天 ⋅ 8

Java 开发者不容错过的 12 种高效工具

Java 开发者常常都会想办法如何更快地编写 Java 代码,让编程变得更加轻松。目前,市面上涌现出越来越多的高效编程工具。所以,以下总结了一系列工具列表,其中包含了大多数开发人员已经使用...

jason_kiss ⋅ 昨天 ⋅ 0

Linux下php访问远程ms sqlserver

1、安装freetds(略,安装在/opt/local/freetds 下) 2、cd /path/to/php-5.6.36/ 进入PHP源码目录 3、cd ext/mssql进入MSSQL模块源码目录 4、/opt/php/bin/phpize生成编译配置文件 5、 . ./...

wangxuwei ⋅ 昨天 ⋅ 0

如何成为技术专家

文章来源于 -- 时间的朋友 拥有良好的心态。首先要有空杯心态,用欣赏的眼光发现并学习别人的长处,包括但不限于工具的使用,工作方法,解决问题以及规划未来的能力等。向别人学习的同时要注...

长安一梦 ⋅ 昨天 ⋅ 0

Linux vmstat命令实战详解

vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令...

刘祖鹏 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部