1.41版cc.spriteFrameCache对象没有了

今天升级了1.4.1版,原js对象cc.spriteFrameCache,现在变成未定义了,有这么坑啊????
这怎么解决?回退?

问题是你们1.4.1的更新说明上没有说明要去掉这个对象啊???为什么不绑定到js了啊???这样对我的项目有很大影响啊

抱歉,的确是去掉了。

以前的分散 cache (SpriteFrameCache, TextureCache)现在全部由 Loader 来管理了,实际上引擎中从 creator 第一个版本起就不再使用任何 spriteFrameCache 的 API 来管理 spriteFrame 了,都是反序列化得到的 SpriteAtlas 数据。API 文档中也没有包括这部分,只是因为 Cocos2d-JS 遗传下来所以还有人在用。

我们不希望用户在继续使用 spriteFrameCache 是因为接下来的版本中会基于 loader 做 AssetBundle,避免未来的概念冲突,所以将它移除了。

有很多 cocos2d-js 遗传的概念可能都慢慢在调整,比如 EventManager 也会彻底对用户透明化,不应该再继续使用。

解决方案其实也很简单,将旧版本中的 CCSpriteFrameCache.js 拿出来放在自己的项目脚本中引用就可以了,在这里可以找到:

https://github.com/cocos-creator/engine/blob/v1.3/cocos2d/core/sprites/CCSpriteFrameCache.js

需要注意的是用 SpriteFrameCache 管理的 SpriteFrame 及其贴图内存,需要用户自己管理

我跟了一下源代码,发现SpriteFrameCache其实注册了getInstance的js方法,因此我没有引入旧版本的CCSpriteFrameCache.js,因为这不知道对项目有什么影响,所以我使用了cc.SpriteFrameCache.getInstance()来获取他的实例,希望你们以后这些更改能及时提出来,我给你说一下我的应用场景,我有个图片,在服务端传过来的时候,是base64编码的字符串,我扩展了代码,用c++解析了数据,并将数据构建成了SpriteFrame,然后放入了 SpriteFrameCache,通过js我获取了 SpriteFrameCache的引用然后提取我放进去的图像资源,至于为什么要这么做,本来那个图像服务端返回的是一个图片地址,但是我用cc.loader.Load来载入图片地址的数据时,时长失败,所以才用了这么一个折中的办法,如果Load无法做到快速、安全的载入远程资源,我当然不会再用了

最后还是希望你们以后有重大改变,能及时提出,文档尽量详细点,不然每次更新我都提心吊胆,现在公司就我这在用cocos creator,都在等我踩雷,希望你们能给力一点啊

好的,谢谢反馈,Native Loader 在后面版本中会支持 downloader 来下载

请问有cocos_js 3.15 的文档吗?是否cocos - js 也把cc.spriteFrameCache 删了。 如果是请问应该用什么来加载plist图片集?能给个范例吗?谢谢。