今天項目接近收尾階段,開始對項目的資源進行整合打包,並對其進行緩存!但還是讓我遇見一些坑!
第一個坑是,圖片都打包成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。。。
緩存資源可以根據界面,分批加載需要顯示的資源!!!!!