本文来自http://blog.csdn.net/runaying ,引用必须注明出处!
cocos2d-X 节点(CCBone.h)API
温馨提醒:为了大家能更好学习,强烈推荐大家看看本人的这篇博客 Cocos2d-X权威指南笔记
显示数据,添加 chile/parent 设置 bone 变换 属性
//显示数据,添加 chile/parent 设置 bone 变换 属性
#ifndef __CCBONE_H__
#define __CCBONE_H__
#include "utils/CCArmatureDefine.h"
#include "datas/CCDatas.h"
#include "animation/CCTween.h"
#include "display/CCDecorativeDisplay.h"
#include "display/CCDisplayManager.h"
NS_CC_EXT_ARMATURE_BEGIN
class Armature;
class Bone : public NodeRGBA
{
public:
/**
* 分配并初始化一个 bone.
* @return 一个初始化的被标记为自动释放的 bone
*/
static Bone *create();
/**
* 分配并初始化一个 bone.
*
* @param name 如果名字不为 null, 那么把这个 name 设置为 bone's 的名字
* @return 一个初始化的被标记为自动释放的 bone
*/
static Bone *create(const char *name);
public:
Bone();
/**
* @js NA
* @lua NA
*/
virtual ~Bone(void);
/**
* 初始化一个空的 Bone 什么也没有初始化
*/
virtual bool init();
/**
* 使用制定的 name 初始化一个 Bone
* @param name Bone's name.
*/
virtual bool init(const char *name);
/**
* 添加 display(显示器) 并使用 displayData 初始化 display(显示器).
* 如果 index 已经有一个 display(显示器), 那么就替换他
* 如果 index 是当前 display(显示的) index, 那么同时修改 display(显示的) _index
*
* @param displayData 它包括显示信息,如显示类型。
* 如果你想创建一个 sprite display,那么创建一个 SpriteDisplayData 参数
*
* @param 要替换或添加到显示的 index
* -1 : 从后追加 display(显示)
*/
void addDisplay(DisplayData *displayData, int index);
void addDisplay(Node *display, int index);
void changeDisplayByIndex(int index, bool force);
/**
* 为这个 bone 添加一个 child, 它会让这个 child 调用 setParent(Bone *parent) 函数来设置他的 parent
* @param child 你希望添加的 child
*/
void addChildBone(Bone *child);
/**
* Set parent bone.
* 如果parent为null,那么就会从 armature (衔铁)里面移除这个 bone
* 它不会设置 armature (衔铁) 如果你希望把 bone 添加到 armature (衔铁)你应该使用 Armature::addBone(Bone *bone, const char* parentName).
*
* @param parent the parent bone.
* NULL : remove this bone from armature
*/
void setParentBone(Bone *parent);
/**
* Get parent bone
* @return parent bone
*/
Bone *getParentBone();
/**
* Remove itself from its parent.
* @param recursion 是否删除 childBone's display(显示)
*/
void removeFromParent(bool recursion);
/**
* Removes a child Bone
* @param bone 你希望移除的 bone
*/
void removeChildBone(Bone *bone, bool recursion);
void update(float delta);
void updateDisplayedColor(const Color3B &parentColor);
void updateDisplayedOpacity(GLubyte parentOpacity);
//! Update color to render(渲染) display
void updateColor();
//! Update zorder (Z 顺序)
void updateZOrder();
virtual void setZOrder(int zOrder);
Tween *getTween();
/*
* 是否改变 bone's transform(变换) 属性. 如果是 true, bone 将更新变换
*/
virtual void setTransformDirty(bool dirty);
virtual bool isTransformDirty();
virtual AffineTransform getNodeToArmatureTransform() const;
virtual AffineTransform getNodeToWorldTransform() const override;
Node *getDisplayRenderNode();
/*
* Get 这个 bone 的 ColliderBody(碰撞) 列表. 这个对象在 ColliderBody 列表里面.
*/
virtual Array *getColliderBodyList();
public:
/*
* 这个 Bone 的 origin(原点)状态. 当你调用 setData 函数时 Display's(显示)状态会受 _boneData, m_pNode, _tweenData 的影响。
* 它(setData)会从 BoneData 复制.
*/
CC_PROPERTY(BoneData *, _boneData, BoneData);
//! A weak reference to the Armature //引用
CC_PROPERTY(Armature *, _armature, Armature);
//! A weak reference to the child Armature
CC_PROPERTY(Armature *, _childArmature, ChildArmature);
CC_SYNTHESIZE(DisplayManager *, _displayManager, DisplayManager)
/*
* 当 armature (衔铁)播放一个动画时,如果这个 MovementData 里面的 bone 没有 MovementBoneData,这个 bone 会被隐藏 .
* 设置 IgnoreMovementBoneData 为 true, 那么这个 bone 也将被显示will also be shown.
*/
CC_SYNTHESIZE(bool, _ignoreMovementBoneData, IgnoreMovementBoneData)
CC_SYNTHESIZE(BlendType, _blendType, BlendType)
protected:
Tween *_tween; //! Calculate tween effect //计算补间效果
//! Used for making tween effect in every frame //用于制作每帧补间效果
CC_SYNTHESIZE_READONLY(FrameData *, _tweenData, TweenData);
CC_SYNTHESIZE(std::string, _name, Name);
Bone *_parentBone; //! A weak reference to its parent //指向他的 parent 的弱引用
bool _boneTransformDirty; //! Whether or not transform dirty //是否正在转换
//! self Transform, use this to change display's state //自我变换,用这个来改变显示的状态
AffineTransform _worldTransform;
};
NS_CC_EXT_ARMATURE_END
#endif /*__CCBONE_H__*/