Чтобы создать анимацию в cocos2d-x 3.2, я делаю это:
SpriteFrameCache* cache = SpriteFrameCache::getInstance();
Vector<SpriteFrame*> animFrames(15);
for(int i = 1; i <= 7; ++i)
{
SpriteFrame* frame = cache->getSpriteFrameByName(String::createWithFormat("%d.png", i)->getCString());
animFrames.pushBack(frame);
}auto animation = Animation::createWithSpriteFrames(animFrames, 1 / animFrames.size());
auto animate = Animate::create(animation);
pSprite->runAction(animate);
Но теперь мне нужно несколько кадров для масштабирования ByX с -1, чтобы создать зеркальное изображение. SpriteFrame
не имеет scale
метод. Тоже не могу scale
pSprite
поскольку только некоторые из кадров должны быть масштабированы. Как я могу решить эту проблему?
У вас довольно странная ситуация 🙂
Вы можете запланировать селектор обновлений на спрайте и установить для flipX значение true / false в зависимости от ваших желаемых условий. Это мое личное предпочтение.
Вы не можете взломать SpriteFrame таким образом, но вы можете использовать RenderTexture: http://www.cocos2d-x.org/reference/native-cpp/V3.0alpha0/d9/ddc/classcocos2d_1_1_render_texture.html — переверните нужные спрайты в новой текстуре, в основном создайте новый лист спрайтов на лету. Это плохая идея.