cocos2d-x节点(CCActionInterval.h)API

本文主要介绍了cocos2d-x中的CCActionInterval.h头文件中涉及的节点API,包括创建有时间间隔的动画、闪烁、重复及顺序操作等。作者建议读者参考其相关博客以深化理解。
摘要由CSDN通过智能技术生成

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

cocos2d-x节点(CCActionInterval.h)API

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

//有时间间隔的 action,使用动画、闪烁、重复次数、按次序创建 action,贝塞尔曲线移动

///cocos2d-x-3.0alpha0/cocos2dx/actions
//有时间间隔的 action,使用动画、闪烁、重复次数、按次序 创建 action,贝塞尔曲线移动

#ifndef __ACTION_CCINTERVAL_ACTION_H__
#define __ACTION_CCINTERVAL_ACTION_H__

#include "base_nodes/CCNode.h"
#include "CCAction.h"
#include "CCProtocols.h"
#include "sprite_nodes/CCSpriteFrame.h"
#include "sprite_nodes/CCAnimation.h"
#include <vector>

NS_CC_BEGIN

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

/** 
@brief 一个间隔 action ,一个在确定周期内发生的 action
它有一个开始时间和一个结束时间. 结束时间参数,开始时间加上持续时间

这些 ActionInterval actions 有一些有趣的属性, 如:
- 他们可以正常运行(默认)
- 它们可以使用相反的方法逆转运行
- 它们可以随着运行时间的改变加速, AccelDeccel(加速减速) and Speed(快速) actions.

例如, 你可以模拟一个正常运行的乒乓球效果,然后再使用反向模式运行他

例如:

Action *pingPongAction = Sequence::actions(action, action->reverse(), NULL);
*/
class CC_DLL ActionInterval : public FiniteTimeAction
{
public:
    /** 从运行开始经过了多少秒. */
    inline float getElapsed(void) { return _elapsed; }

    /** 初始化一个  action */
    bool initWithDuration(float d);

    //在 GridAction 里面扩展
    void setAmplitudeRate(float amp);
    float getAmplitudeRate(void);

    //
    // Overrides
    //
    virtual bool isDone(void) const override;
    virtual void step(float dt) override;
    virtual void startWithTarget(Node *target) override;
    virtual ActionInterval* reverse() const override = 0;
	virtual ActionInterval *clone() const override = 0;


protected:
    float _elapsed;
    bool   _firstTick;
};

/** @brief 按照次序运行 actions, 一个接一个的
 */
class CC_DLL Sequence : public ActionInterval
{
public:
    /** 辅助构造函数,用来创建一个按照次序运行的 action array(序列) */
    static Sequence* create(FiniteTimeAction *pAction1, ...) CC_REQUIRES_NULL_TERMINATION;
    /** 辅助构造函数,使用给丁的 array 创建一个按照次序运行的 action array(序列)
     * @code
     * 当这个函数绑定到 js or lua,输入参数会改变
     * in js  :var   create(var   object1,var   object2, ...)
     * in lua :local create(local object1,local object2, ...)
     * @endcode
     */
    static Sequence* create(Array *arrayOfActions);
    /** 辅助构造函数,用来创建一个 sequence-able actions array */
    static Sequence* createWithVariableList(FiniteTimeAction *pAction1, va_list args);
    /** creates the action */
    static Sequence* createWithTwoActions(FiniteTimeAction *pActionOne, FiniteTimeAction *pActionTwo);
    /**
     * @js NA
     * @lua NA
     */
    virtual ~Sequence(void);

    /** initializes the action */
    bool initWithTwoActions(FiniteTimeAction *pActionOne, FiniteTimeAction *pActionTwo);

    //
    // Overrides
    //
    virtual Sequence* clone() const override;
	virtual Sequence* reverse() const override;
    virtual void startWithTarget(Node *target) override;
    virtual void stop(void) override;
    virtual void update(float t) override;

protected:
    FiniteTimeAction *_actions[2];
    float _split;
    int _last;
};

/** @brief action 重复的次数.
 * 如果一直使用下去使用 RepeatForever action.
 */
class CC_DLL Repeat : public ActionInterval
{
public:
    /** 创建一个重复 action. Times 是一个 unsigned(无符号)整数,在 1 、 pow(2,30) 之间 */
    static Repeat* create(FiniteTimeAction *pAction, unsigned int times);
    /**
     * @js NA
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值