在我的游戏中,我需要旋转硬币,因为我正在使用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/