Cocos2d-x SpriteFrameCache的使用

前端之家收集整理的这篇文章主要介绍了Cocos2d-x SpriteFrameCache的使用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

转自:http://www.cnblogs.com/lhyz/p/4550348.html


3.x的cocos似乎不再鼓励使用什么BatchNode等优化方式,官方支持的是SpriteFrameCache,类似TextureCache。

使用的方式是在某个位置加载plist文件,然后直接通过getSpriteFrameByName就可以获取SpriteFrame。

核心代码

  1. bool SpriteScene::init(){
  2. if (!Layer::init()){
  3. return false;
  4. }
  5. auto visibleSize = Director::getInstance()->getVisibleSize();
  6.  
  7. /*可以用来取代TextureCache来进行图片预加载*/
  8. auto spriteCache = SpriteFrameCache::getInstance();
  9. spriteCache->addSpriteFramesWithFile("runs.plist");
  10. Vector<SpriteFrame*> frames;
  11. std::ostringstream osr;
  12. for (int i = 1; i <= 15; ++i){
  13. osr << "run" << i << ".png";
  14. frames.pushBack(spriteCache->getSpriteFrameByName(osr.str()));
  15. osr.str("");
  16. }
  17. auto animation = Animation::createWithSpriteFrames(frames,0.1f);
  18. auto animate = Animate::create(animation);
  19. auto sprite = Sprite::createWithSpriteFrame(spriteCache->getSpriteFrameByName("run1.png"));
  20. sprite->setPosition(Point(visibleSize.width / 2,visibleSize.height / 2));
  21. this->addChild(sprite);
  22. sprite->runAction(RepeatForever::create(animate));
  23.  
  24. return true;
  25. }


ostringstream是我用来实现string格式化的一个方式,这个流的置空大部分文章都认为是str("")这个函数。同时注意不要给流后加上std::endl;

猜你在找的Cocos2d-x相关文章