当前位置 : 主页 > 手机开发 > 其它 >

Cocos2d-x SpriteFrameCache的使用

来源:互联网 收集:自由互联 发布时间:2021-06-13
转自:http://www.cnblogs.com/lhyz/p/4550348.html 3.x的cocos似乎不再鼓励使用什么BatchNode等优化方式,官方支持的是SpriteFrameCache,类似TextureCache。 使用的方式是在某个位置加载plist文件,然后直接

转自: 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;

网友评论