求助,2.0,SpriteFrame.setRect()方法无效了

cc.Class({
extends: cc.Component,
properties: {
TexLimit : {
default : new cc.Vec2(20,200),
},
StairTex : {
default : null,
type : cc.SpriteFrame
},
},
start () {
var sprite = this.node.getComponent(cc.Sprite);
var tex = this.StairTex.clone();
sprite.spriteFrame = tex;
var texSize = tex.getOriginalSize();
sprite.spriteFrame.setRect(new cc.rect(0,this.TexLimit.x,texSize.width,this.TexLimit.y));
//tex.setRect(new cc.rect(0,this.TexLimit.x,texSize.width,this.TexLimit.y));
},
});
就这么简单的代码,之前用1.9.1版本的时候可以显示正确。升级2.0之后显示的是没裁剪的图片。请问新版本需要什么额外的操作吗?

Sprite的设置是
SIMPLE
CUSTOM
Trim = true

我也遇到这个问题了,楼主有解决了吗?这么久了引擎官方都没个人出来处理一下???

spriteFrame.setRect有效,最好检查一下其他相关的代码。

2.0.2版本

图片是252*329的一张图片

代码:
var sprite = this.node.getComponent(cc.Sprite);
sprite.spriteFrame.setRect(cc.rect(0,20,150,200));

运行效果


2赞

我用的感觉是无效的,不知道是不是传进去的Spriteframe用了clone

运行结果什么都没有


如果把sp.setRect(0, 0, 32, 32);注释掉


图片

demo我也上传了,引擎用的是2.0.2的bate2版本
NewProject_1.zip (497.3 KB)

api:

正确的:

sp.setRect(cc.rect(0,0,32, 32));

你提供的代码:

sp.setRect(0, 0, 32, 32);

@Knox @BigBear这个bug是应该是发布的时候裁剪掉这两个模块导致的,好像裁剪这两个模块的时候出问题不是一两次了,无奈。。。。
demo我上传了NewProject_4.rar (750.4 KB)

抱歉,写demo太不小心了,我重新提交一次bug
我发现,是有些图片才出现这个问题,有些图片是正常的,目测是太长的图片就会有问题
现在图片换成这张图片:


代码如下:首先注释sp.setRect(cc.rect(0, 0, 32, 32));

运行效果如下:

然后把注释去掉

运行结果如下:

就效果来看,只是图片变小了,没有起到裁剪显示的效果
新demo再提交一次,其实只是改了代码错误跟换了图片
NewProject_1.zip (475.1 KB)

我看了下你的demo
2.0.0的spriteFrame.setRect确实有点问题,后续会把这个问题修复一下。
目前有个应急方案你可以尝试一下:

    onLoad () {
        let self = this;
        cc.loader.loadResDir("test", cc.SpriteFrame, function (err, assets) {
            let sp = assets[0];
            var rect = cc.rect(0, 64, 32, 32)
            self.sp.spriteFrame = sp;
            self.sp.spriteFrame.getTexture().update(rect);
            self.sp.spriteFrame.setRect(rect);
            self.sp.node.setContentSize(rect.size);
        });
    },

好,多谢

关于这个 setRect 不生效的问题,我来说明一下哦,因为你使用的图片高度超出引擎中设置的 dynamicatlas
当前可加入图集的 sprite 图片最大尺寸,所以你这张图是无法加入到图集中并重新计算纹理的。
因此有两个办法解决以上问题:

  1. 修改图片本身 texture 的大小
  2. 修改图集最大尺寸
    @1111716@lnh526331397

才544就超出了????这。。。。再怎么说限制也应该是2048才合理吧

这个问题已经修复了。下个小版本更新会加入修复内容,同样的你也可以自定义引擎。
PR: https://github.com/cocos-creator/engine/pull/3410