cocos2d-X 节点(CCBone.h)API

本文来自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__*/


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值