今天项目接近收尾阶段,开始对项目的资源进行整合打包,并对其进行缓存!但还是让我遇见一些坑!
第一个坑是,图片都打包成plist,在项目里有些图片提示找不到。log打印如下信息
Get data from file(level_lives.png) failed, error code is 2
我就蛋疼了,后来看了下找不到的图片都是因为创建的精灵,改变纹理用到setTexture,getTexture相关的接口。猜测是这里出了问题,把这些接口改成setSpriteFrame,getSpriteFrame之类的,就没问题了!
因为我缓存都是plis文件,看了下Sprite::create里面的代码,会在创建精灵的时候调用的下面这段代码:
Texture2D *texture = Director::getInstance()->getTextureCache()->addImage(filename);
所以只有create创建的精灵或者自己用TextureCache加入缓存,改变纹理才能调用setTexture,getTexture相关的接口。
用SpriteFrameCache加入缓存的,改变纹理只能调用setSpriteFrame,getSpriteFrame之类的。
第二坑是发现加载缓存会让界面卡一下。。。这让我纠结很多!!!我只主场景显示了背景图片,然后停在这里加载。。。怎么会卡呢!!后来慢慢注释掉加载的东西,发现是预加载音乐和音效让界面卡的!!!然后去看引擎代码,发现preloadBackgroundMusic是空的。。。。再看preloadEffect是有内容的,但在playEffect时候会调用preloadEffect。。。
所以音乐和音效其实不用预加载!!!!
时间: 2024-12-06 19:47:35