动画使用.png文件cocos2dx

时间:2013-07-18 03:34:20

标签: c++ objective-c cocos2d-x cocos2d-android

我有9个不同场景的34个图像文件。每次用户选择这9个场景中的1个并根据我使用以下

生成动画
 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);  

我面临的问题是,当这个动画运行时,会有一段时间滞后(一切都停止几秒钟)然后动画开始。任何解决方案?

1 个答案:

答案 0 :(得分:2)

每当你调用动画 - &gt; addSpriteFrameWithFileName()一个新的&#34; CCSpriteFrame&#34;被建造。

相反,您应该首先将精灵帧添加到CCSpriteFrameCache并使用

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

Ps:这些功能名称可能略有不同,但我希望你能得到这个想法。