使用setRect裁剪图片后如何获取裁剪后范围的纹理呢

  • Creator 版本:2.1.3
        var go=new cc.Node("11");
        var tmpSp=go.addComponent(cc.Sprite);
        tmpSp.sizeMode=cc.Sprite.SizeMode.CUSTOM;
        tmpSp.type=cc.Sprite.Type.SIMPLE;
        let tx=this.node.getComponent(cc.Sprite).spriteFrame.getTexture();


        let cut =new cc.SpriteFrame(tx);

        cut.setRect(new cc.Rect(0,0,380,434));
        
        tmpSp.spriteFrame=cut;

主要就这些代码,但是裁剪后cut对象的纹理大小还是源纹理的大小,急需裁剪后得到的纹理,这个该如何获得呢?求各位大大帮忙解答一下。(顺便问一下怎么给shader中传递一张纹理呢?)

急求啊,但愿别沉。感谢——

你要获取的是 texture 裁剪之后的 size 么?你上面不是已经有数据了么 380,434。setRect 这个接口是不会设置 width 和 height 的,只会将数据传递给 rect 。所以只能你自己处理下。

预期是希望可以把裁剪后的图传给sahder进行采样,可是好像裁剪后的图uv也没有改变,shader中采样结果还是对原纹理进行的采样。效果是希望可以对裁剪后的图进行采样。(刚用creator不久,大大有什么可以提供的思路吗,非常感谢了)

rect 的 x、y 才会改变 uv

newframe.setRect(new cc.Rect(100,100,100,100));

cc.log(newframe.getRect().width);

cc.log(newframe.getTexture().width);

测试过 uv 是没有改变的

不是width,是取texture的坐标