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

cocos2d-X 节点(CCTween.h)API

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

补间动画

///cocos2d-x-3.0alpha0/extensions/CocoStudio/Armature/animation
//补间动画


#ifndef __CCTWEEN_H__
#define __CCTWEEN_H__

#include "CCProcessBase.h"
#include "../utils/CCTweenFunction.h"

NS_CC_EXT_ARMATURE_BEGIN

class Bone;
class ArmatureAnimation;

class  Tween : public ProcessBase
{
public:
    /**
     * Create with a Bone
     * @param bone the Bone Tween will bind to              //这个bone 将绑定到 Bone Tween
     */
    static Tween *create(Bone *bone);
public:
	/**
     * @js ctor
     */
    Tween(void);
    /**
     * @js NA
     * @lua NA
     */
    virtual ~Tween(void);

    /**
     * Init with a Bone
     * @param bone the Bone Tween will bind to
     */
    virtual bool init(Bone *bone);

    /**
     * 开始过程
     *
     * @param  movementBoneData  the MovementBoneData 包含了所有的 FrameData
     * @param  durationTo 这个动画需要改变	的帧的数量
     * @param  durationTween  你想在游戏中播放的帧的数量。
     *        如果_durationTween是80,那么动画将在一个循环中播放80帧
     *
     * @param  loop   w动画是否循环
     *
     *         loop < 0 : MovementData 使用这个值从 action 编辑器里面获取
     *         loop = 0 : this animation is not loop
     *         loop > 0 : this animation is loop
     *
     * @param  tweenEasing    Tween easing 用于计算慢动作效果
     *
     *         TWEEN_EASING_MAX : MovementData 使用这个值从 action 编辑器里面获取
     *         -1 : fade out        淡出
     *         0  : line
     *         1  : fade in             淡入
     *         2  : fade in and out  淡入淡出
     *
     */
    virtual void play(MovementBoneData *movementBoneData, int durationTo, int durationTween,  int loop, int tweenEasing);

    inline void setAnimation(ArmatureAnimation *animation)
    {
        _animation = animation;
    }
    inline ArmatureAnimation *getAnimation() const
    {
        return _animation;
    }
protected:

    /**
     * Update(float dt) 将调用此处理程序,您可以在这里处理你的逻辑
     */
    virtual void updateHandler();

    /**
     * 计算当前帧是否到达,如果当前帧有时间监听,那么调用事件监听
     */
    virtual float updateFrameData(float currentPercent);

    /**
     * 计算_from和_TO的之间的值,并把它送给帧数据
     */
    virtual void setBetween(FrameData *from, FrameData *to, bool limit = true);

    /**
     * 按照百分比来计算当前FrameData与补间效果
     */
    virtual FrameData *tweenNodeTo(float percent, FrameData *node = NULL);

    /**
     * 按照百分比来计算当前的颜色与补间效果
     */
    virtual void tweenColorTo(float percent, FrameData *node);

    /**
     * 显示更新索引,当到达一个关键帧过程的关键帧事件
     */
    virtual void arriveKeyFrame(FrameData *keyFrameData);
protected:
    //! 弱引用到当前MovementBoneData。该数据是在数据池
    CC_SYNTHESIZE(MovementBoneData *, _movementBoneData, MovementBoneData)

    FrameData *_tweenData;		//! 计算补间动画帧数据, //! the Bone's tweenData 是弱引用
    FrameData *_from;				//! From 帧数据,用于值之间的计算
    FrameData *_to;				//! To frame 帧数据,用于值之间的计算
    FrameData *_between;			//! Between 帧数据,用于值之间的计算 FrameData(m_pNode) 的值


    Bone *_bone;					//! 一个 Bone 的弱引用

    CCTweenType _frameTweenEasing;	//! 获取当前帧使用的补间动画效果

    int _betweenDuration;			//! 当前关键帧将持续_betweenDuration帧
    int _totalDuration;


    int _fromIndex;				//! MovementBoneData的帧列表中的当前帧的索引, 它和 m_iFrameIndex 不同
    int _toIndex;					//! MovementBoneData的帧列表中的下一帧的索引, 它和 m_iFrameIndex 不同

    ArmatureAnimation *_animation;

};

NS_CC_EXT_ARMATURE_END

#endif /*__CCTWEEN_H__*/


Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐