cocos2d-X 节点(CCNode.h)API

 本文来自http://blog.csdn.net/runaying ,引用必须注明出处!

cocos2d-X 节点(CCNode.h)API 

温馨提醒:为了大家能更好学习,强烈推荐大家看看本人的这篇博客 Cocos2d-X权威指南笔记

这个类是一个基础类,最常用的 Node 有: Scene, Layer, Sprite, Menu
1.图形getter、setter 属性 (z 顺序、OpenGL 顶点、位置、缩放、旋转、倾斜角、锚点、尺寸、是否可见......)
2.children 和 parent 之间的关系(添加/删除 children、为children 添加识别码、获取 children 总数、获取 children 的parent......)
3.设置对象效果、为对象设置 schedule、各种坐标的相互转换、添加移除组件


#ifndef __PLATFORM_CCNODE_H__
#define __PLATFORM_CCNODE_H__

#include "ccMacros.h"
#include "cocoa/CCAffineTransform.h"
#include "cocoa/CCArray.h"
#include "CCGL.h"
#include "shaders/ccGLStateCache.h"
#include "shaders/CCGLProgram.h"
#include "kazmath/kazmath.h"
#include "script_support/CCScriptSupport.h"
#include "CCProtocols.h"

NS_CC_BEGIN

class Camera;
class GridBase;
class Point;
class Touch;
class Action;
class RGBAProtocol;
class LabelProtocol;
class Scheduler;
class ActionManager;
class Component;
class Dictionary;
class ComponentContainer;

/**
 * @添加到组 base_nodes
 * @{
 */

enum {
    kNodeTagInvalid = -1,
};

enum {
    kNodeOnEnter,
    kNodeOnExit,
    kNodeOnEnterTransitionDidFinish,
    kNodeOnExitTransitionDidStart,
    kNodeOnCleanup
};

//简要

/** @简要 Node 是主要元素. 所有被绘制或者包含的东西都是 Node.
 最常用的 Node 有: Scene, Layer, Sprite, Menu.

 Node 的主要特点是:
 - 它可以包含其它的 Node nodes (addChild, getChildByTag, removeChild, etc)
 - 他们可以定期回调 (schedule, unschedule, etc)
 - 它们可以执行动作(runAction, stopAction, etc)

一些 Node nodes 它们的子节点为他们提供额外的功能.

 子节点通常包含下面的 (one/all) :
 - 重写 init 来初始化资源和进度回调
 - 随着时间的推进创建回调 handle
 - 重写 draw 来渲染 node

节点的特点:
 - position
 - scale (x, y)//尺寸
 - rotation (in degrees, clockwise)//旋转(以度为单位,顺时针方向)
 - Camera (an interface to gluLookAt )  //(视点转换函数接口)
 - GridBase (to do mesh transformations)//(网格转换)
 - anchor point     //锚点
 - size
 - visible
 - z-order          //给定的名称排序
 - openGL z position        //

 默认值:
 - rotation: 0              //旋转
 - position: (x=0,y=0)
 - scale: (x=1,y=1)
 - contentSize: (x=0,y=0)       //内容大小
 - anchorPoint: (x=0,y=0)        //锚点

 限制:
 - 一个节点是一个 "void" 对象. 它没有 texture

 转换为不可见的顺序
 -# 节点将转换 translated (position)         //位置
 -# 节点将转换  rotated (rotation)     //旋转
 -# 节点将转换  scaled (scale)         //规模
 -# 节点根据中心点的值移动

 转换为可见的顺序
 -# 节点将转换 translated (position)         //位置
 -# 节点将转换  rotated (rotation)     //旋转
 -# 节点将转换  scaled (scale)         //规模
 -# 将在屏幕中占据位置
  -# 节点根据中心点的值移动
 -# 将渲染所占据的屏幕

 中心点:
 - 每个节点都有一个中心点。默认情况下,它指向 Node 的中心节点。
 */

class CC_DLL Node : public Object
{
public:

构造函数名和析构函数的初始化

    /// @{
    /// @构造函数的名称, 析构函数的初始化

    /**
     * 分配并初始化一个节点。
     * @return 一个被标记为 "autorelease" 的初始化的节点.
     */
    static Node * create(void);

    /**
     * 默认的构造方法
     */
    Node(void);
    
    /**
     * 默认的析构函数
     */
    virtual ~Node(void);
    
    /**
     *  初始化一个节点的实例
     *  @return 返回是否初始化成功.
     */
    virtual bool init();

    /**
     * 获取的描述字符串。这使得调试更加容易。
     * @return 一个字符串,当字符串是 '\0' 的时候终止
     */
    const char* description(void) const;
    
    /// @} 初始化结束

图形属性的 getter 和 setter 方法名称

 /// @{
   
    /// @图形属性的 getter 和 setter 方法名称
    
    /**
     * 设置 Z 顺序代表绘制顺序, 并重新排序这个节点在其父节点的孩子数组中的位置
     *
     *  Z 顺序的节点是相对于它的 "brothers": 子节点有相同的 parent.
     * OpenGL's z 顶点什么也没有做. 它只是在 cocos2d 中影响节点的绘制顺序.
     * 号码越大, 这个节点在这个消息队列中越晚被绘制。
     * 请参考到setVertexZ(浮动)的区别。
     *
     * @param nZOrder  这个节点 Z 顺序。.
     */
    virtual void setZOrder(int zOrder);
    /**
     * 标准的设置 z 的绘制顺序 setter
     *
     * 这是一个内部的方法。不要把它用在框架之外。
     * setZOrder(int) 和 _setOrder(int) 的却别是:
     * - _setZOrder(int) 简单的为 _ZOrder 设置成员变量
     * - setZOrder(int) 首先改变 _ZOrder, 然后把这个节点写入其 parent's 孩子 array.
     */
    virtual void _setZOrder(int z);
    /**
     * 获取这个节点Z顺序。.
     *
     * @请参考 setZOrder(int)
     *
     * @return Z顺序.
     */
    virtual int getZOrder() const;


    /**
     * 设置真实的 OpenGL Z 顶点.
     *
     * openGL 的 Ž 顶点和 cocos2d 的 Z 顺序之间的差异:
     * -  OpenGL 的 Ž 修改的 Z 顶点,不是 parent-children 之间的 Z 顺序
     * - OpenGL 的 Z 可能需要设置 2D 投影
     * - 如果所有的节点使用相同的 OpenGL Ž 顶点,那么 cocos2d 的 Z 顺序工程确定的. eg: vertexZ = 0
     *
     * @warning 使用它有破坏 cocos2d parent-children z 顺序的风险
     *
     * @param fVertexZ  这个节点的 OpenGL Z 顶点.
     */
    virtual void setVertexZ(float vertexZ);
    /**
     * 获取这个节点 OpenGL Z 顶点.
     *
     * @请看 setVertexZ(float)
     *
     * @return 这个节点的 OpenGL Z 顶点
     */
    virtual float getVertexZ() const;


    /**
     * 改变这个节点 X 轴上的比例因子
     *
     * 如果你之前没有改变,它的默认值就是 1.0 
     *
     * @param scaleX   X轴的比例因子。
     */
    virtual void setScaleX(float scaleX);
    /**
     * Returns 这个节点在 X 轴上的比例因子
     *
     * @请看 setScaleX(float)
     *
     * @return X轴的比例因子。
     */
    virtual float getScaleX() const;

    
    /**
     *  改变这个节点 Y 轴上的比例因子
     *
     * 如果你之前没有改变,它的默认值就是 1.0
     *
     * @param scaleY   Y 轴的比例因子。   
     */
    virtual void setScaleY(float scaleY);
    /**
     * Returns 这个节点在 X 轴上的比例因子
     *
     * @请看 setScaleY(float)
     *
     * @return Y 轴的比例因子。   
     */
    virtual float getScaleY() const;

    
    /**
     * 改变这个节点的 X 轴和 Y 轴上的比例因子
     *
     * 1.0 是默认的比例因子. 在同一时间修改 X 和 Y 轴 上的比例因子
     *
     * @param scale     X 和 Y 轴的比例因子.
     */
    virtual void setScale(float scale);
    /**
     * 获取这个节点的比例因子,   X 和 Y 轴拥有相同的比例因子
     *
     * @warning 这并意味着 _scaleX != _scaleY ,因为你可以单独修改它们其中的一个例如: setScaleY(float scaleY);
     * @请看 setScale(float)
     *
     * @return 这个节点的比例因子.
     */
    virtual float getScale() const;
    
    
    /**
     * 改变这个节点的 OpenGL (x,y)坐标位置
     *
     * 通常,我们使用点(X,Y)组成的Point对象。
     * 原始点(0,0)在屏幕左下角。
     * For example, 这个代码片段设置它的 node 在 屏幕的中心
     * @code
     * Size size = Director::getInstance()->getWinSize();
     * node->setPosition( Point(size.width/2, size.height/2) )
     * @endc
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值