本文来自http://blog.csdn.net/runaying ,引用必须注明出处!
cocos2d-X 节点(CCArmatureAnimation.h)API
温馨提醒:为了大家能更好学习,强烈推荐大家看看本人的这篇博客 Cocos2d-X权威指南笔记
armature (衔铁)动画
///cocos2d-x-3.0alpha0/extensions/CocoStudio/Armature/animation
//armature (衔铁)动画
#ifndef __CCANIMATION_H__
#define __CCANIMATION_H__
#include "CCProcessBase.h"
NS_CC_EXT_ARMATURE_BEGIN
enum MovementEventType
{
START,
COMPLETE,
LOOP_COMPLETE
};
class Armature;
class Bone;
typedef void (Object::*SEL_MovementEventCallFunc)(Armature *, MovementEventType, const char *);
typedef void (Object::*SEL_FrameEventCallFunc)(Bone *, const char *, int, int);
#define movementEvent_selector(_SELECTOR) (SEL_MovementEventCallFunc)(&_SELECTOR)
#define frameEvent_selector(_SELECTOR) (SEL_FrameEventCallFunc)(&_SELECTOR)
class ArmatureAnimation : public ProcessBase
{
public:
/**
* 使用 armature (衔铁) 创建
* @param armature ArmatureAnimation 将绑定到 Armature
*/
static ArmatureAnimation *create(Armature *armature);
public:
/**
* @js ctor
*/
ArmatureAnimation();
/**
* @js NA
* @lua NA
*/
virtual ~ArmatureAnimation(void);
/**
* 使用 Armature 初始化
* @param armature ArmatureAnimation 将绑定到 Armature
*/
virtual bool init(Armature *armature);
/**
* 动画缩放。
* @param animationScale 缩放值
*/
virtual void setAnimationScale(float animationScale);
virtual float getAnimationScale() const;
/**
* 缩放速度
* @param animationScale 缩放值
*/
virtual void setSpeedScale(float speedScale);
virtual float getSpeedScale() const;
//! 动画更新速度
virtual void setAnimationInternal(float animationInternal);
/**
* 使用动画名播放动画
*
* @param animationName 你希望播放的动画名
* @param durationTo 两个动画 changing-over(变化结束)之间的帧.
* 这个动画需要改变多少个帧
*
* -1 : MovementData 使用这个值从动画设计面板里面获取
* @param durationTween 你想在游戏中播放的帧的数量。
* 如果_durationTween是80,那么动画将在一个循环中播放80帧
*
* -1 : MovementData 使用这个值从动画设计面板里面获取
*
* @param loop 动画是否循环
*
* loop < 0 : MovementData 使用这个值从动画设计面板里面获取
* loop = 0 : this animation is not loop
* loop > 0 : this animation is loop
*
* @param tweenEasing Tween easing 用于计算慢动作效果
*
* TWEEN_EASING_MAX : MovementData 使用这个值从动画设计面板里面获取
* -1 : fade out 淡出
* 0 : line
* 1 : fade in 淡入
* 2 : fade in and out 淡入淡出
*
*/
void play(const char *animationName, int durationTo = -1, int durationTween = -1, int loop = -1, int tweenEasing = TWEEN_EASING_MAX);
/**
* 通过索引播放动画,其他的参数也一样缩放
* @param _animationIndex 你希望播放的动画索引
*/
void playByIndex(int animationIndex, int durationTo = -1, int durationTween = -1, int loop = -1, int tweenEasing = TWEEN_EASING_MAX);
/**
* Pause the Process(处理) //暂停
*/
virtual void pause();
/**
* Resume the Process(处理) //恢复
*/
virtual void resume();
/**
* Stop the Process(处理) //停止
*/
virtual void stop();
/**
* Get movement count //获取移动次数
*/
int getMovementCount();
void update(float dt);
/**
* Get current movementID // 获取当前移动 ID
* @return The name of current movement //当前 移动的名字
*/
std::string getCurrentMovementID();
/** 设置 armature (衔铁) 移动 事件的回调函数
*
* 断开这个事件只要调用 setMovementEventCallFunc(NULL, NULL);
*/
void setMovementEventCallFunc(Object *target, SEL_MovementEventCallFunc callFunc);
/**
* 设置 armature (衔铁) 帧 事件的回调函数
* 断开这个事件只要调用 setFrameEventCallFunc(NULL, NULL);
*/
void setFrameEventCallFunc(Object *target, SEL_FrameEventCallFunc callFunc);
protected:
/**
* Update(float dt) 将调用此处理程序,您可以在这里处理你的逻辑
*/
void updateHandler();
/**
* 更新当前关键帧,并处理自动停止,暂停
*/
void updateFrameData(float currentPercent);
/**
* Emit a frame event //发出帧事件
*/
void frameEvent(Bone *bone, const char *frameEventName, int originFrameIndex, int currentFrameIndex);
friend class Tween;
protected:
//! AnimationData save all MovementDatas this animation used. //使用这个动画的 AnimationData保存所有MovementDatas
CC_SYNTHESIZE_RETAIN(AnimationData *, _animationData, AnimationData);
//! Scale the animation speed //缩放动画速度
float _speedScale;
MovementData *_movementData; //! MovementData save all MovementFrameDatas this animation used. //使用这个动画的 AnimationData保存所有MovementDatas
Armature *_armature; //! A weak reference of armature //一个 armature 的弱引用
std::string _movementID; //! Current movment's name //当前移动的名字
int _toIndex; //! The frame(帧) index in MovementData->m_pMovFrameDataArr, it's different from m_iFrameIndex.
Array *_tweenList;
protected:
/**
* MovementEvent CallFunc. //移动事件回调函数
* @param Armature* a Armature
* @param MovementEventType, Event Type, like START, COMPLETE. //事件类型 、完整
* @param const char*, Movement ID, also called Movement Name
*/
SEL_MovementEventCallFunc _movementEventCallFunc;
/**
* FrameEvent CallFunc.
* @param Bone*, a Bone
* @param const char*, the name of this frame event
* @param int, origin frame index
* @param int, current frame index, animation may be delayed (延迟)
*/
SEL_FrameEventCallFunc _frameEventCallFunc;
Object *_movementEventTarget;
Object *_frameEventTarget;
};
NS_CC_EXT_ARMATURE_END
#endif /*__CCANIMATION_H__*/