child.addComponent(cc.Sprite).spriteFrame = spriteFrame;
let spriteCom = child.getComponent(cc.Sprite);
spriteCom.trim = true;
spriteCom.sizeMode = cc.Sprite.SizeMode.TRIMMED;
打印的话精灵是对的 但是节点size不对啊
child.addComponent(cc.Sprite).spriteFrame = spriteFrame;
let spriteCom = child.getComponent(cc.Sprite);
spriteCom.trim = true;
spriteCom.sizeMode = cc.Sprite.SizeMode.TRIMMED;
打印的话精灵是对的 但是节点size不对啊
也就是精灵值此刻是trim=true sizeMode=TRIMMED
但是节点的宽高没跟着变化 依然等于trim=false sizeMode=RAW
我这边按照你的写法测试,是变化了的啊
节点是new的 精灵也是new的设置父节点为该节点 然后设置trim和sizeMode 再给它一个spriteFrame
let newNode = new cc.Node()
this.node.addChild(newNode)
newNode.addComponent(cc.Sprite).spriteFrame = this.spriteFrame;
let spriteCom = newNode.getComponent(cc.Sprite);
spriteCom.trim = true;
spriteCom.sizeMode = cc.Sprite.SizeMode.TRIMMED
console.log("输出spriteCom",spriteCom)
然后你看节点的宽高会变吗 应该是大小不一样的 忽略和不忽略透明区域
是正常的变化的,而且节点大小是裁剪后的大小的
是加载的远程 texture?
本地的cc.resources.load
直接放场景里修改trim 节点大小会变化
new的节点 再newNode.addComponent(cc.Sprite).spriteFrame = this.spriteFrame;
设置trim 节点不会变化
你延时一帧再去读节点大小试试
temp1.getComponent(cc.Sprite).sizeMode = 2;
我把它变成全局乱改都不行 打印Sprite是会变 节点size不会跟着变 隐藏显示倒也可以
指的是图片那个的节点 跟父节点没半毛钱关系的
图片的节点确实跟父节点的 size 没关系啊
问题是 动态生成的节点加个精灵 精灵改变图模式时值是变的 但该节点的宽高没有变化
应该是你这一句 let spriteCom = child.addComponent(cc.Sprite);有问题吧
这会导致你的Sprite组件有两个,一个你面板上挂上去的,一个上面那行代码加的,同一类组件有多个时然后你getComponent会返回第一个,getComponents 会返回一组该类型组件
我看明白了,1 和 2 是一组对照实验,1 是直接挂上去的,trim 可以生效,2 是动态加载的trim没有生效,好像真的是 bug