Cocos2d-x 3.0具有不同锚点的旋转序列

时间:2014-05-10 18:05:01

标签: c++ cocos2d-x cocos2d-x-3.0

我正在尝试制作一个包含3个RotateBy动作的序列。

第一次使用ANCHOR_MIDDLE_TOP

的RotateBy操作

使用ANCHOR_MIDDLE

的第二次RotateBy操作

使用ANCHOR_MIDDLE_BOTTOM

的第三次RotateBy操作

但是,我不知道如何按以下顺序运行此序列

  1. mySprite->setAnchorPoint(Point::ANCHOR_MIDDLE_TOP);
  2. 将mySprite旋转90度
  3. mySprite->setAnchorPoint(Point::ANCHOR_MIDDLE);
  4. 将mySprite旋转90度
  5. mySprite->setAnchorPoint(Point::ANCHOR_MIDDLE_BOTTOM);
  6. 将mySprite旋转90度
  7. 而Sequence :: create仅采取行动。

1 个答案:

答案 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语法。