cocos2dx - ActionTween无效

时间:2015-05-08 12:04:46

标签: ios cocos2d-x cocos2d-x-3.0 chipmunk

在我的游戏中,我需要旋转硬币,因为我正在使用ActionTween,如下所示

auto animateTo=ActionTween::create(.4, "roll", 0.f, M_PI_2);
auto animateFrom=ActionTween::create(.4, "roll", M_PI_2, M_PI);
auto seq=Sequence::create(animateTo,animateFrom, NULL);
coin->runAction(seq); 

我已将ActionTweenDelegate实现为

class GameScene : Base, public ActionTweenDelegate

并实施了方法

void updateTweenAction(float value, const std::string& key);

但每次我得到

  

断言失败:目标必须实现ActionTweenDelegate Assertion   失败:(dynamic_cast(target)),功能   的 startWithTarget

我试图将startTarget设置为

animateTo->setOriginalTarget(this);
animateFrom->setOriginalTarget(this);

但是没有运气,没有什么工作可以随时崩溃。

如果有人经历过同样的事情,请帮助。

感谢。

1 个答案:

答案 0 :(得分:2)

这样做:

ActionTweenDelegate (ActionTween的协议)继承到要在其上执行ActionTween的sprite的类。

还写

void updateTweenAction(float value, const std::string& key);
你班上的.h& .cpp个文件。

ActionTween运行后,使用值更新sprite的key属性;

示例:

MySprite *sprite = MySprite::create();
sprite->runAction(ActionTween::create(1.0, "scaleX", 1.0, 0.0))

和MySprite.cpp

void updateTweenAction(float value, const std::string& key) {
    this->setScaleX(value);
}

确保补间构造函数和回调中的键“scaleX”必须相同。