4

有没有可能只显示 CCSprite 的一部分?

它接缝,contentSize财产没有一个好的结果。

4

3 回答 3

6

我认为您可能必须为此创建一个新的精灵。一般的伪代码是这样的。

CCTexture2D *origTexture = originalSprite->getTexture();

CGRect rect = {0, 0, 20, 20};
CCSprite *destSprite = CCSprite::spriteWithTexture(origTexture, CGRect);
于 2011-09-07T16:29:48.227 回答
4

doc_180 和 James 的答案都是通过使用纹理的一部分创建新的 CCSprite 来工作的,但是如果您使用裁剪方法,您将获得使用完整纹理但只能在屏幕上绘制其中一部分的 CCSprite。这种方法的一个优点是您可以随时修改要显示或隐藏的部分的大小,而不必一次又一次地重新创建 CCSprite(或一次又一次地替换纹理)。

因此,要使用裁剪方法,只需从此处下载 ClippingNode 类,然后将要裁剪的 CCSprite 添加到该 ClippingNode。然后调用其中一种方法来指定将绘图限制在哪个区域。我目前正在使用它来创建进度条,所以我确信它工作得很好。

于 2011-09-07T17:23:02.730 回答
0

获取[sprite displayedFrame],改变frame那个,然后用那个 spriteframe 创建一个新的 sprite:CCSprite *sprite2 = [CCSprite spriteWithSpriteFrame:frame]

于 2011-09-07T16:29:32.113 回答