精灵值不能动态变化?cc2.4.6

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不会跟着变 隐藏显示倒也可以

NewProject.zip (289.4 KB)
BUG吧 还有得救吗

NewProject.zip (289.4 KB)
BUG吧 还有得救吗???

@zzf_2025 处理一下。。

节点大小和 sprite 的 trim 勾选没有关系,


如果你要 demo 上左右都能变化,动态加载的时候类型选择 cc.SpriteFrame;

指的是图片那个的节点 跟父节点没半毛钱关系的

图片的节点确实跟父节点的 size 没关系啊

问题是 动态生成的节点加个精灵 精灵改变图模式时值是变的 但该节点的宽高没有变化

应该是你这一句 let spriteCom = child.addComponent(cc.Sprite);有问题吧
这会导致你的Sprite组件有两个,一个你面板上挂上去的,一个上面那行代码加的,同一类组件有多个时然后你getComponent会返回第一个,getComponents 会返回一组该类型组件

我看明白了,1 和 2 是一组对照实验,1 是直接挂上去的,trim 可以生效,2 是动态加载的trim没有生效,好像真的是 bug