Анимация с использованием файлов .png cocos2dx

У меня есть 34 .png файлов изображений для 9 различных сценариев. Каждый раз, когда пользователь выбирает 1 из этих 9 сценариев, и в соответствии с этим я генерирую анимацию, используя следующие

 std::string name;
MixingScreen::animation = CCAnimation::create();
// load image file from local file system to CCSpriteFrame, then add into CCAnimation
for (int i = 0; i < 34; i++)
{
std::stringstream st,ii;
st << Constants::flav;
if (i<10)
{
ii<<i;
name="screen/screen02/fx/sugar/0" + st.str()+"/a_0000"+ii.str()+".png";
}
else
{
ii<<i;
name="screen/screen02/fx/sugar/0" + st.str()+"/a_000"+ii.str()+".png";
}
//sprintf(szImageFileName, "Images/grossini_dance_%02d.png", i);
MixingScreen::animation->addSpriteFrameWithFileName(name.c_str());
}
MixingScreen::animation->setDelayPerUnit(5.0f / 34.0f);

action = CCAnimate::create(MixingScreen::animation);
CCCallFunc *done = CCCallFunc::create(this, callfunc_selector(MixingScreen::doneMixing));
CCSequence *readySequence = CCSequence::create(action,done,NULL);
particles->runAction(readySequence);

Проблема, с которой я сталкиваюсь, заключается в том, что при запуске этой анимации возникает задержка во времени (все останавливается на несколько секунд), а затем начинается анимация. Любое решение?

0

Решение

Каждый раз, когда вы вызываете animation-> addSpriteFrameWithFileName (), создается новый «CCSpriteFrame».

Вместо этого вы должны сначала добавить спрайт-фреймы в CCSpriteFrameCache и использовать

animation->addSpriteFrame(CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameWithName(""))

PS: эти имена функций могут немного отличаться, но я надеюсь, что вы поняли идею.

2

Другие решения

Других решений пока нет …