CEffectMgr类

#ifndef __EFFECTMGR_H__
#define __EFFECTMGR_H__

#include "GameFrameHead.h"

namespace cocos2d
{
    class CCFiniteTimeAction;
}


class GAMEFRAME_API CEffectMgr
{
public:
    enum ActionType
    {
        _Act_Sequence = 0,    //顺序执行
        _Act_Spawn = 1,        //同时执行
    };

    enum Action
    {
        _CCMoveTo = 10,
        _CCMoveBy = 11,
        _CCJumpTo = 12,
        _CCJumpBy = 13,
        _CCBezierBy  = 14,
        _CCScaleTo = 15,
        _CCScaleBy = 16,
        _CCRotateTo = 17,
        _CCRotateBy = 18,
        _CCBlink = 19,
        _CCTintTo = 20,
        _CCTintBy = 21,
        _CCFadeTo = 22,
        _CCFadeIn = 23,
        _CCFadeOut = 24,
    };

public:
    ~CEffectMgr();
    static CEffectMgr* getInstance();
    static void destroy();

    cocos2d::CCFiniteTimeAction* getAction(const char* psKey);

private:
    CEffectMgr();
private:
    static CEffectMgr* g_pEffectMgr;

};

#endif //__EFFECTMGR_H__
#include "EffectMgr.h"
#include "Config.h"
#include "XCommon.h"

CEffectMgr* CEffectMgr::g_pEffectMgr = NULL;

CEffectMgr::CEffectMgr()
{

}

CEffectMgr::~CEffectMgr()
{

}

CEffectMgr* CEffectMgr::getInstance()
{
    if (!g_pEffectMgr)
    {
        g_pEffectMgr = new CEffectMgr();
    }
    return g_pEffectMgr;
}

void CEffectMgr::destroy()
{
    SAFE_DELETE(g_pEffectMgr);
}

cocos2d::CCFiniteTimeAction* CEffectMgr::getAction( const char* psKey )
{
    ActionInfo& actionInfo = *CConfig::getInstance()->getActionInfoByKey(psKey);
    vector<float> vecParam;
    vector<string> vecBuf;
    
    CXCommon::split(actionInfo.strParm, string(" "), vecBuf);
    for (int i = 0; i < vecBuf.size(); i++)
    {
        vecParam.push_back(atof(vecBuf[i].c_str()));
    }

    CCFiniteTimeAction* pAct = NULL;
    switch(actionInfo.nAction)
    {
    case _CCMoveTo:
        {
            pAct = CCMoveTo::create(vecParam[0], ccp(vecParam[1], vecParam[2]));
        }
        break;
    case _CCMoveBy:
        {
            pAct = CCMoveBy::create(vecParam[0], ccp(vecParam[1], vecParam[2]));
        }
        break;
    case _CCJumpBy:
        {
            pAct = CCJumpBy::create(vecParam[0], ccp(vecParam[1], vecParam[2]), vecParam[3], vecParam[4]);
        }
        break;
    case _CCJumpTo:
        {
            pAct = CCJumpTo::create(vecParam[0], ccp(vecParam[1], vecParam[2]), vecParam[3], vecParam[4]);
        }
        break;
    case _CCBezierBy:
        {
            //暂未实现
        }
        break;
    case _CCScaleTo:
        {
            pAct = CCScaleTo::create(vecParam[0], vecParam[1], vecParam[2]);
        }
        break;
    case _CCScaleBy:
        {
            pAct = CCScaleBy::create(vecParam[0], vecParam[1], vecParam[2]);
        }
        break;
    case _CCRotateTo:
        {
            pAct = CCRotateTo::create(vecParam[0], vecParam[1]);
        }
        break;
    case _CCBlink:
        {
            pAct = CCBlink::create(vecParam[0], vecParam[1]);
        }
        break;
    case _CCTintTo:
        {
            pAct = CCTintTo::create(vecParam[0], vecParam[1], vecParam[2], vecParam[3]);
        }
        break;
    case _CCTintBy:
        {
            pAct = CCTintBy::create(vecParam[0], vecParam[1], vecParam[2], vecParam[3]);
        }
        break;
    case _CCFadeTo:
        {
            pAct = CCFadeTo::create(vecParam[0], vecParam[1]);
        }
        break;
    case _CCFadeIn:
        {
            pAct = CCFadeIn::create(vecParam[0]);
        }
        break;
    case _CCFadeOut:
        {
            pAct = CCFadeOut::create(vecParam[0]);
        }
    default:
        {
            CCLog("error: action creation fails!");
        }
        break;
    }

    ASSERT(pAct);
    return pAct;
}
原文地址:https://www.cnblogs.com/newlist/p/3176830.html