我正在尝试制作一个包含3个RotateBy动作的序列。
第一次使用ANCHOR_MIDDLE_TOP
使用ANCHOR_MIDDLE
使用ANCHOR_MIDDLE_BOTTOM
但是,我不知道如何按以下顺序运行此序列
mySprite->setAnchorPoint(Point::ANCHOR_MIDDLE_TOP);
mySprite->setAnchorPoint(Point::ANCHOR_MIDDLE);
mySprite->setAnchorPoint(Point::ANCHOR_MIDDLE_BOTTOM);
而Sequence :: create仅采取行动。
答案 0 :(得分:1)
您可以使用CallFunc
作为操作,并调用一个更改精灵定位点的函数。像这样:
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语法。