我正在尝试制作一个具有3个RotateBy Action 的序列。
第一个RotateBy Action ,带有ANCHOR_MIDDLE_TOP
使用ANCHOR_MIDDLE
进行第二次RotateBy操作
使用ANCHOR_MIDDLE_BOTTOM
进行第三次RotateBy操作
但是,我不知道如何按以下顺序运行此序列
mySprite->setAnchorPoint(Point::ANCHOR_MIDDLE_TOP);
mySprite->setAnchorPoint(Point::ANCHOR_MIDDLE);
mySprite->setAnchorPoint(Point::ANCHOR_MIDDLE_BOTTOM);
而Sequence::create只采取 Action 。
最佳答案
您可以将CallFunc
用作操作,并调用一个函数来更改子画面的 anchor 。像这样:
cocos2d::Sequence::create(cocos2d::RotateBy::create(1.0f, 90.0f),
cocos2d::CallFunc::create(MySprite::changeAnchorPoint),
cocos2d::RotateBy::create(1.0f, 90.0f),
cocos2d::CallFunc::create(MySprite::changeAnchorPoint),
cocos2d::RotateBy::create(1.0f, 90.0f),
cocos2d::CallFunc::create(MySprite::changeAnchorPoint));
编辑:发送参数,您应该可以编写如下内容:
cocos2d::CallFunc::create([mySprite]() {
mySprite->setAnchorPoint(Point::ANCHOR_MIDDLE_TOP);
});
注意: CallFunc想要一个没有参数的函数,但是您可以通过使用c++ 11 lambda语法捕获要在函数中使用的对象来解决该问题。
关于c++ - 具有不同 anchor 的Cocos2d-x 3.0旋转序列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23584571/