3.X如何实现动态更换精灵背景图片?
找了好多版本的代码,都不能用啊
有会弄的老师吗?
3D的话替换材质上的图片,2D的还是sprite上的spriteframe
resources.load(‘background1/spriteFrame’, SpriteFrame, (err,assets) => {
console.log(assets)
});
用这段读取到资源后,怎么修改当前的node的 SpriteFrame ?
折腾了半天,能打印出来了,不知道怎么赋值给当前node
https://docs.cocos.com/creator/manual/zh/scripting/dynamic-load-resources.html?h=加载
self.node.getComponent(cc.Sprite).spriteFrame = spriteFrame;
请问出现这样的错误提示,需要怎么解决?
3.2.0版本
self?.node.getComponent(cc.Sprite).spriteFrame = spriteFrame;
修改图片后,精灵自带的widget组件的填充效果也没有了
如图,两张精灵图的设置是一样的。
换图前,后面的图也是铺满整个高度的,动态更换后,平铺效果就没有了。
该如何设置?
感谢,非常感谢!
另外,换图后,填充效果消失的问题需要如何处理?
你这是新手吧,查看下sprite组件的sizeMode选下custom试试
OK了,感谢。
对,是新手,昨天刚开始用这个
按官方文档,这里会报错
var remoteUrl = "https://www.baidu.com/img/flexible/logo/pc/result.png";
assetManager.loadRemote(remoteUrl,{ext: '.png'}, function (err, imageAsset) {
const spriteFrame = new SpriteFrame();
const texture = new Texture2D();
texture.image = imageAsset;
spriteFrame.texture = texture;
});
就是直接copy,有报错呀
…,你还是先去b站看下视频以及文档先吧,
3.0以上的我没有试过,你可以试试
let spriteFrame = new SpriteFrame(texture);
self.node.getComponent(Sprite).spriteFrame = spriteFrame;
assetManager.loadRemote(url, function (err, image: ImageAsset) {
if (err) {
return log(err);
}
if (isValid(headSprite.node)) {
// let oldFrame = headSprite.spriteFrame;
// if (oldFrame) {
// assetManager.releaseAsset(oldFrame.texture);
// }
let frame = new SpriteFrame();
frame.texture = image._texture;
headSprite.spriteFrame = frame;
cb && cb(image.width, image.height);
}
});