1

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

第一次 RotateBy 动作ANCHOR_MIDDLE_TOP

第二个 RotateBy 动作ANCHOR_MIDDLE

第三个 RotateBy 动作ANCHOR_MIDDLE_BOTTOM

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

  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 度

而 Sequence::create 只采取行动。

4

1 回答 1

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 语法捕获您想在函数中使用的对象来解决这个问题。

于 2014-05-10T18:23:23.757 回答