setTextureRect会改变图片的尺寸?这是不是bug?

如下代码,调用sprite:setTextureRect之前,获取到的图片尺寸是正常的,调用之后,图片的尺寸就会被修改成 100, 100
这是bug吗?还是这个函数的功能本来就是这样?(我用的版本是2.2.3)
如果本来就是这样,有没有不改变图片尺寸的只显示图片某一区域的函数?(比如java中的setclip)

local size = sprite:getContentSize()
print('size.width,size.height = ',size.width,size.height)
sprite:setTextureRect(CCRectMake(0, 0, 100, 100))
size = sprite:getContentSize()
print('size.width,size.height = ',size.width,size.height)

这个很正常啊。。。。

你要显示图片的一部分,要么用剪裁,要么另外创建一个 Sprite(并在创建时指定 rect)。

我想要的效果是一张sprite可以多次裁剪,比如先显示图片的上半部分,再显示下半部分. 再比如用于显示进度条的增长.
如果裁剪后sprite的尺寸就被改变了,那么就无法进行第二次裁剪了

用clippingRegionNode可以实现,没用过的话,可以搜下

不太明白你的意思。

但是一个 sprite 对应一个 texture。如果你改变 texture,这个 sprite 的显示内容就会发生变化,而且其 ContentSize 也会变。

谢谢两位.

回4楼, 我想要做的就是
1.用一张带有’0123456789’的图片来显示数字,
2.用一个长条来显示进度条.(既然是进度条,当然就要有长度变化)
我第一想到的就是用切割图片的方式实现,之前用其他的引擎就是这么做的.

现在我的问题已经解决了.不用切割图片,分别用的是CCLabelAtlas以及CCProgressTimer

补充一下, 我说的切割图片其实不是真正把大图切成小图, 而是控制这张图的显示区域, 只显示图片的某一部分而已

哎哟,10个数字切成散图

number_0.png 到 number_9.png

然后用 texturepacker 打包为 png+plist

程序里加载,然后直接 display.newSprite("#number_0.png") 就行了

mark!!!