转自:http://www.cnblogs.com/lhyz/p/4550348.html
3.x的cocos似乎不再鼓励使用什么BatchNode等优化方式,官方支持的是SpriteFrameCache,类似TextureCache。
使用的方式是在某个位置加载plist文件,然后直接通过getSpriteFrameByName就可以获取SpriteFrame。
核心代码:
bool SpriteScene::init(){ if (!Layer::init()){ return false; } auto visibleSize = Director::getInstance()->getVisibleSize(); /*可以用来取代TextureCache来进行图片预加载*/ auto spriteCache = SpriteFrameCache::getInstance(); spriteCache->addSpriteFramesWithFile("runs.plist"); Vector<SpriteFrame*> frames; std::ostringstream osr; for (int i = 1; i <= 15; ++i){ osr << "run" << i << ".png"; frames.pushBack(spriteCache->getSpriteFrameByName(osr.str())); osr.str(""); } auto animation = Animation::createWithSpriteFrames(frames,0.1f); auto animate = Animate::create(animation); auto sprite = Sprite::createWithSpriteFrame(spriteCache->getSpriteFrameByName("run1.png")); sprite->setPosition(Point(visibleSize.width / 2,visibleSize.height / 2)); this->addChild(sprite); sprite->runAction(RepeatForever::create(animate)); return true; }
ostringstream是我用来实现string格式化的一个方式,这个流的置空大部分文章都认为是str("")这个函数。同时注意不要给流后加上std::endl;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。