[Cocos2d-x For WP8]ActionManager动作管理

本文介绍如何在Cocos2d-x中使用CCActionManager类管理游戏对象的动作,包括暂停和恢复动作,并通过示例代码展示了如何实现点击屏幕后暂停游戏对象动作3秒再继续播放。

    在Cocos2d-x里面可以通过CCActionManger类来管理动作的暂停和恢复,CCActionMessage是管理所有Action的单例,一般情况下并不直接使用这个单例,而是使用CCNode的接口,但是假如你想操作的目标不是CCNode的子类或者你想暂停/恢复动作就要使用到CCActionMessager。

CCActionManger类是一个单例模式的类来的,我们可以通过下面的方式来获取动作管理类的实例:

    CCDirector* pDirector = CCDirector::sharedDirector();
    pDirector->getActionManager()->resumeTarget(pGrossini);

    那么在使用CCActionManger类来管理动作的暂停的逻辑必须放在在onEnter()方法里面,否则将不会起作用。

下面演示当点击屏幕的时候,先暂停3秒钟,然后再播放动画:

class ResumeTest : public cocos2d::CCLayer
{
public:
    ResumeTest();
    ~ResumeTest();
    virtual void onEnter();
    void resumeCat(float time);
};

void ResumeTest::onEnter()
{
    CCLayer::onEnter();
    CCSize size = CCDirector::sharedDirector()->getWinSize();
    CCSprite* pGrossini = CCSprite::create("cat.png");
    addChild(pGrossini, 0, 1);
    pGrossini->setPosition( ccp(size.width * 0.5, size.height * 0.5) );

    pGrossini->runAction(CCScaleBy::create(5, 3));

    CCDirector* pDirector = CCDirector::sharedDirector();
    //暂停目标精灵的动作
    pDirector->getActionManager()->pauseTarget(pGrossini);
    pGrossini->runAction(CCRotateBy::create(10, 360));

    this->schedule(schedule_selector(ResumeTest::resumeCat), 3.0f);
}


void ResumeTest::resumeCat(float time)
{
    this->unschedule(schedule_selector(ResumeTest::resumeCat));
    CCNode* pGrossini = getChildByTag(1);
    CCDirector* pDirector = CCDirector::sharedDirector();
    //运行目标精灵的动作
    pDirector->getActionManager()->resumeTarget(pGrossini);
}

在helloworld页面添加点击事件的处理:

void HelloWorld::ccTouchesEnded(CCSet* touches, CCEvent* event)
{
    CCScene * scene = new CCScene();
    CCLayer* pLayer =new ResumeTest();
    scene->addChild(pLayer);
    CCDirector::sharedDirector()->replaceScene(scene);
    scene->autorelease();
}

运行的效果:

转载于:https://www.cnblogs.com/linzheng/p/3279811.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值