在我的游戏中,我需要旋转硬币,因为我正在使用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声明
失败:(dynamic_cast(target)),函数
startWithTarget

我试图设置startTarget以及
animateTo->setOriginalTarget(this);
animateFrom->setOriginalTarget(this);

但是,没有运气,它每次都崩溃了。

如果有人遇到过同样的事情,请帮忙。

谢谢。

最佳答案

做这个 :

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

还写

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”必须相同。

关于ios - cocos2dx-ActionTween无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30123415/

10-11 14:42