在我的游戏中,我需要旋转硬币,因为我正在使用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);
但是没有运气,没有什么工作可以随时崩溃。
如果有人经历过同样的事情,请帮助。
感谢。
答案 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”必须相同。