在2.x版本有个spriteFrame.setTexture()的接口可以传入图集资源,及切割信息
在3.x版本找不到这个接口了,请问在3.x版本要如何实现将图集动态切成spriteFrame
spriteFrame.reset({
originalSize: Size,
rect: rect,
offset: offset,
isRotate: false,
texture: texture
})
配置文件夹为Bundle资源包,动态加载图集
首先你的图集在合成plist文件之前,命名要按照顺序出图
然后创建文件夹放入图集资源。loadBundle获取资源包,load获取包内资源
assetManager.loadBundle(文件名,(err,ab : AssetManager Bundle)=>{
ab.load(序列帧文件名,SpriteAltas,(err,atlas : SpriteAtlas)=>{
if(err){
错误
return
}
比如你序列帧有很多图,先定义一个数组存这些SpriteFrame图
for(i=0,atlas的长度){
数组[i] = atlas.getSpriteFrame(图的名字+i) //存进数组
}
})
})
注意ab.load是异步回调操作,初次使用的话要在load里面使用资源才有用,且load不保证加载顺序
我想的是用远程加载的单张图集png+json,然后通过json将图集中的图解析出来存成spriteFrame。
这个口子我这样调
let sf:cc.SpriteFrame = new cc.SpriteFrame()
sf.reset(…)
但是会报错
报什么错?是不是填写的数值超过了合图的范围?
[Preview]Uncaught TypeError: this._texture.getHash is not a function in http://localhost:7457/scripting/engine/bin/.cache/dev/preview/bundled/index.js
找到问题了,是我动态加载的图集获得的是ImageAsset不是Texture2d,我还要把它转成Texture2d才能用你说的方法。谢谢了
该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。
