当我调用setFlipped(true)时,为什么动画不会水平翻转?

Kai*_*zay 18 cocos2d-x cocos2d-x-3.0 cocos2d-x-3.x

我有一些精灵,玩家角色面向右边.我可以从那些精灵中创建一个动画就好了.问题是,如果我想让精灵面向左边.

我做以下事情:

Sprite* p = Sprite::createWithSpriteFrameName("Jumping");
p->setPosition(Vec2(_visibleSize.width/2,_visibleSize.height/2));
this->addChild(p);
p->setFlippedX(true);
Vector<AnimationFrame*> animFrames;
float frameRate = 0.32f;
std::vector<std::string> frameNames = {"Running 0","Running 1","Running 2"};

for (int i =0; i<3;i++){
    auto frameName = frameNames.at(i);
    auto spriteFrame = SpriteFrameCache::getInstance()->getSpriteFrameByName(frameName);
    ValueMap userInfo;
    userInfo["frame_index"] = Value(i);
    auto animFrame = AnimationFrame::create(spriteFrame, frameRate, userInfo);
    animFrames.pushBack(animFrame);
}

auto animation = Animation::create(animFrames, frameRate);
auto animationAction = Animate::create(animation);
p->runAction(RepeatForever::create(animationAction));
p->setFlippedX(true);
Run Code Online (Sandbox Code Playgroud)

动画运行,但动画仍显示面向右侧的玩家.问题是什么?为什么setFlippedX在这种情况下不起作用?

我正在使用Cocos2d-x 3.13.1.我找不到任何错误,所以我认为我做错了什么.

Kai*_*zay 5

这似乎是一个错误,而且似乎没有一种解决方法,它缺少使用两个Sprite Set的方法-一个用于所有Sprite而不翻转的Sprite Set,另一个用于Sprite翻转的Sprite Set。

更糟的是-这意味着如果要翻转,就不能使用动画代码,而是需要实现自己的逻辑,才能使用适当的Sprite,动画等集合。

编辑:它似乎在3.16中已修复