【发布时间】:2014-07-09 12:42:30
【问题描述】:
这是正确的异步预加载 spritesheet 并在移除加载屏幕后在其他场景中适当使用的方法吗?
// load the texture into the cache
Director::getInstance()->getTextureCache()->addImageAsync("ingame.png",
[](cocos2d::Texture2D *texture) {
SpriteFrameCache::getInstance()->addSpriteFramesWithFile("ingame.plist", texture);
// here remove loading screen and go to ingame scene to use the loaded spritesheet
}
);
// use the loaded spritesheet in ingame scene
auto bg = Sprite::createWithSpriteFrameName("ingame_bg.png");
bg->setPosition(origin + visibleSize / 2);
addChild(bg, 0);
据我了解,在调用 addImageAsync 后,.png 文件被加载到 GPU 的内存中,但目前还没有关于 spritesheet 中图像位置的信息。因此我们也调用SpriteFrameCache::getInstance()->addSpriteFramesWithFile("ingame.plist", texture); 要求cocos2d-x 解析.plist 文件并了解spritesheet 中的图像在哪里。是否有意义?
【问题讨论】:
-
我只是这样做:
SpriteFrameCache::getInstance()->addSpriteFramesWithFile("sprites.plist"); -
但是不会预加载,对吧?请告诉我我关于这些功能是对还是错的结论?
-
如果您查看
addSpriteFramesWithFile()的源代码,它肯定会预加载。
标签: c++ cocos2d-x cocos2d-x-3.0