您的位置:首页 > 移动开发 > Cocos引擎

cocos2d-x节点(CCActionInstant.h)API

2013-12-08 09:29 330 查看
本文来自http://blog.csdn.net/runaying ,引用必须注明出处!

cocos2d-x节点(CCActionInstant.h)API

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

// action 的显示、隐藏、翻转、定位
///cocos2d-x-3.0alpha0/cocos2dx/actions
// action 的显示、隐藏、翻转、定位

#ifndef __CCINSTANT_ACTION_H__
#define __CCINSTANT_ACTION_H__

#include <string>
#include <functional>

#include "CCStdC.h"
#include "CCAction.h"

NS_CC_BEGIN

/**
* @addtogroup actions
* @{
*/

/**
@brief 即时 actions 立即执行 actions. 它们不具备持续时间类似 IntervalAction actions.
*/
class CC_DLL ActionInstant : public FiniteTimeAction //<NSCopying>
{
public:
//
// Overrides
//
virtual ActionInstant* clone() const override = 0;
virtual ActionInstant * reverse(void) const override = 0;
virtual bool isDone(void) const override;
virtual void step(float dt) override;
virtual void update(float time) override;
};

/** @brief Show the node
*/
class CC_DLL Show : public ActionInstant
{
public:
/** 分配并初始化 action */
static Show * create();

Show(){}

//
// Overrides
//
virtual void update(float time) override;
virtual ActionInstant* reverse(void) const override;
virtual Show* clone() const override;
};

/**
@brief Hide the node
*/
class CC_DLL Hide : public ActionInstant
{
public:
/** 分配并初始化 action */
static Hide * create();

Hide(){}

//
// Overrides
//
virtual void update(float time) override;
virtual ActionInstant* reverse() const override;
virtual Hide* clone() const override;
};

/** @brief 切换的节点的可见性
*/
class CC_DLL ToggleVisibility : public ActionInstant
{
public:
/** 分配并初始化 action */
static ToggleVisibility * create();

ToggleVisibility(){}

//
// Overrides
//
virtual void update(float time) override;
virtual ToggleVisibility* reverse() const override;
virtual ToggleVisibility* clone() const override;
};

/**
@brief Remove the node
*/
class CC_DLL RemoveSelf : public ActionInstant
{
public:
/** 创建 action */
static RemoveSelf * create(bool isNeedCleanUp = true);

RemoveSelf():_isNeedCleanUp(true)
{}

/** init the action */
bool init(bool isNeedCleanUp);

//
// Override
//
virtual void update(float time) override;
virtual RemoveSelf* clone() const override;
virtual RemoveSelf* reverse() const override;

protected:
bool _isNeedCleanUp;
};

/**
@brief 水平翻转精灵
@since v0.99.0
*/
class CC_DLL FlipX : public ActionInstant
{
public:
/** create the action */
static FlipX * create(bool x);

FlipX()
:_flipX(false)
{}

/** init the action */
bool initWithFlipX(bool x);

//
// Overrides
//
virtual void update(float time) override;
virtual FlipX* reverse() const override;
virtual FlipX* clone() const override;

protected:
bool    _flipX;
};

/**
@brief 垂直翻转精灵
@since v0.99.0
*/
class CC_DLL FlipY : public ActionInstant
{
public:
/** create the action */
static FlipY * create(bool y);

FlipY()
:_flipY(false)
{}

/** init the action */
bool initWithFlipY(bool y);

//
// Overrides
//
virtual void update(float time) override;
virtual FlipY* reverse() const override;
virtual FlipY* clone() const override;

protected:
bool    _flipY;
};

/** @brief 把节点放置在一个特定的位置
*/
class CC_DLL Place : public ActionInstant //<NSCopying>
{
public:
Place(){}

/** 使用 position 创建一个 action */
static Place * create(const Point& pos);
/** 使用 position 初始化一个 action */
bool initWithPosition(const Point& pos);

//
// Overrides
//
virtual void update(float time) override;
virtual Place* reverse() const override;
virtual Place* clone() const override;

protected:
Point _position;
};

/** @brief 调用一个 'callback'
*/
class CC_DLL CallFunc : public ActionInstant //<NSCopying>
{
public:
/** 使用 std::function<void()> 的回调类型 创建一个 action.
这是创建 callback 的首选方法.
* 当这个函数绑定到 js or lua,输入参数会改变
* In js: var create(var func, var this, var [data]) or var create(var func)
* In lua:local create(local funcID)
*/
static CallFunc * create(const std::function<void()>& func);

/** 使用 callback 创建一个 action

typedef void (Object::*SEL_CallFunc)();
@过时不再需要建议使用新的 API ,可以使用 std::function 代替.
* @js NA
* @lua NA
*/
CC_DEPRECATED_ATTRIBUTE static CallFunc * create(Object* pSelectorTarget, SEL_CallFunc selector);

public:
/**
* @js ctor
*/
CallFunc()
: _selectorTarget(NULL)
, _callFunc(NULL)
, _function(nullptr)
{
}
/**
* @js NA
* @lua NA
*/
virtual ~CallFunc();

/** 使用 callback 初始化一个 action
typedef void (Object::*SEL_CallFunc)();
@过时不再需要建议使用新的 API ,可以使用 std::function 代替.
*/
CC_DEPRECATED_ATTRIBUTE bool initWithTarget(Object* pSelectorTarget);

/** 使用 std::function<void()> 初始化一个 action
* @js NK
* @lua NK
*/
bool initWithFunction(const std::function<void()>& func);

/** executes(执行) the callback */
virtual void execute();

inline Object* getTargetCallback()
{
return _selectorTarget;
}

inline void setTargetCallback(Object* pSel)
{
if (pSel != _selectorTarget)
{
CC_SAFE_RETAIN(pSel);
CC_SAFE_RELEASE(_selectorTarget);
_selectorTarget = pSel;
}
}
//
// Overrides
//
virtual void update(float time) override;
virtual CallFunc* reverse() const override;
virtual CallFunc* clone() const override;

protected:
/** Target 将会被调用 */
Object*   _selectorTarget;

union
{
SEL_CallFunc    _callFunc;
SEL_CallFuncN    _callFuncN;
};

/** function 将会被调用 */
std::function<void()> _function;
};

/**
@brief 把 node 作为 'callback' 的第一个参数
N 意味着 Node
*/
class CC_DLL CallFuncN : public CallFunc
{
public:
/**使用 std::function<void()> 的回调类型 创建一个 action.
这是创建 callback 的首选方法.
*/
static CallFuncN * create(const std::function<void(Node*)>& func);

/** 使用 callback 创建一个 action

typedef void (Object::*SEL_CallFuncN)(Node*);
@过时不再需要建议使用新的 API ,可以使用 std::function 代替.
*/
CC_DEPRECATED_ATTRIBUTE static CallFuncN * create(Object* pSelectorTarget, SEL_CallFuncN selector);
public:
CallFuncN():_functionN(nullptr){}

/** 使用 std::function<void(Node*)> 初始化一个 action
*/
bool initWithFunction(const std::function<void(Node*)>& func);

/** 使用 callback 初始化一个 action

typedef void (Object::*SEL_CallFuncN)(Node*);
@过时不再需要建议使用新的 API ,可以使用 std::function 代替.
*/
CC_DEPRECATED_ATTRIBUTE bool initWithTarget(Object* pSelectorTarget, SEL_CallFuncN selector);

//
// Overrides
//
virtual CallFuncN* clone() const override;
virtual void execute() override;

protected:
/** 函数调用时会把 "sender" 作为第一个参数传递进去 */
std::function<void(Node*)> _functionN;
};

/**
@过时不再需要建议使用新的 API ,可以使用 CallFuncN 代替.
@brief 把节点作为 'callback' 的第一个参数,Node 的数据数据作为第二个参数
* ND means: Node and Data. Data is void *, 它可能是任何东西.
*/

class CC_DLL  __CCCallFuncND : public CallFunc
{
public:
/** 使用 callback、作为参数传递的数据 创建一个 action */
CC_DEPRECATED_ATTRIBUTE static __CCCallFuncND * create(Object* selectorTarget, SEL_CallFuncND selector, void* d);

protected:
/** 使用 callback、作为参数传递的数据 初始化一个 action */
bool initWithTarget(Object* selectorTarget, SEL_CallFuncND selector, void* d);

public:
//
// Overrides
//
virtual __CCCallFuncND* clone() const override;
virtual void execute() override;

protected:
SEL_CallFuncND _callFuncND;
void* _data;
};

/**
@过时不再需要建议使用新的 API ,可以使用 CallFuncN 代替.
@brief object 作为 'callback' 的第一个参数
O means Object.
@since v0.99.5
*/

class CC_DLL __CCCallFuncO : public CallFunc
{
public:
/** 使用 callback 创建一个 action

typedef void (Object::*SEL_CallFuncO)(Object*);
*/
CC_DEPRECATED_ATTRIBUTE static __CCCallFuncO * create(Object* selectorTarget, SEL_CallFuncO selector, Object* object);
/**
* @js ctor
*/
__CCCallFuncO();
/**
* @js NA
* @lua NA
*/
virtual ~__CCCallFuncO();

protected:
/** 使用 callback 初始化一个 action

typedef void (Object::*SEL_CallFuncO)(Object*);
*/
bool initWithTarget(Object* selectorTarget, SEL_CallFuncO selector, Object* object);

public:
//
// Overrides
//
virtual __CCCallFuncO* clone() const override;
virtual void execute() override;

Object* getObject() const;
void setObject(Object* obj);

protected:
/** object 作为参数传递 */
Object* _object;
SEL_CallFuncO _callFuncO;
};

// end of actions group
/// @}

NS_CC_END

#endif //__CCINSTANT_ACTION_H__
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: