我想用spriteFrame和图集做帧动画

在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天后自动关闭。不再允许新的回复。