播放一个数组中的动画


#ifndef _h_AnimHelp_h
#define _h_AnimHelp_h
#include "cocos2d.h"
#include "cocos-ext.h"
#include <vector>
using namespace std;
using namespace cocos2d;
using namespace cocos2d::extension;


struct SeqData
{
    SeqData():seq_(NULL)
    ,dt_(0.1f)
    {

    }

    Sequence* seq_;
    float     dt_;
};

class AnimHelp
{
public:
        void callOut(Node* _obj, float dt, SEL_CallFuncND func)
        {
            if (!_obj)
            {
                log("[CallOut] obj got nil!");
                return;
            }
            auto _dt = DelayTime::create(dt);
            auto _sq = Sequence::create(_dt, func, NULL);

            _obj->runAction(_sq);
        }


    void init(vector<SeqData*>   _seq)
    {
        seq_ = _seq;
        index_ = 0;
    }

    Sequence* getAnim()
    {
        SeqData* data = seq_[index_];
        if (!data)
        {
            return NULL;
        }
        return data->seq_;
    }

    float getTime()
    {
        SeqData* data = seq_[index_];

        if (!data)
        {
            return NULL;
        }

        return data->dt_;
    }
    void setIndex(int _index)
    {
        index_ = _index;
    }

    int getIndex()
    {
        return index_;
    }

    int getLength()
    {
        return seq_.size();
    }



    static AnimHelp* getInstance()
    {
        if (NULL == instance_)
        {
            instance_ = new AnimHelp;
        }
        return instance_;
    }

private:
    static AnimHelp* instance_;
    vector<SeqData* > seq_;
    int index_;
};


#define HEARTBEAT(classname, func) void\  ##classname::##func(float dt) \
{ \
    auto _index = AnimHelp::getInstance()->getIndex(); \
    auto length = AnimHelp::getInstance()->getLength(); \
\
    if (length == _index) \
    { \
        unschedule(schedule_selector(##classname::##func));\
        return; \
    } \
\
    unschedule(schedule_selector(##classname::##func)); \
    schedule(schedule_selector(##classname::##func), AnimHelp::getInstance()->getTime()); \
    obj_->runAction(AnimHelp::getInstance()->getAnim()); \
    _index++; \
    AnimHelp::getInstance()->setIndex(_index); \
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值