Cocos2d показывает только часть CCSprite - PullRequest
4 голосов
/ 07 сентября 2011

Есть ли возможность показать только часть CCSprite?

Это показывает, что свойство contentSize не дает хорошего результата.

Ответы [ 3 ]

6 голосов
/ 07 сентября 2011

Я думаю, вам, возможно, придется создать новый спрайт для этого. Общий псевдокод таков.

CCTexture2D *origTexture = originalSprite->getTexture();

CGRect rect = {0, 0, 20, 20};
CCSprite *destSprite = CCSprite::spriteWithTexture(origTexture, CGRect);
4 голосов
/ 07 сентября 2011

Ответы и doc_180, и ответов Джеймса работают путем создания нового CCSprite, используя часть текстуры, но если вы используете метод отсечения , вы получите CCSprite, который использует полную текстуру, но имеет возможность тольконарисовать часть этого на экране.Одним из преимуществ этого метода является то, что вы можете изменять, насколько большую или маленькую часть вы хотите показать или скрыть на лету, вместо того, чтобы заново создавать CCSprite снова или снова (или заменять текстуру снова и снова).

Итак, чтобы использовать метод отсечения, просто скачайте класс ClippingNode отсюда и добавьте CCSprite, который вы хотите обрезать, к этому ClippingNode.Затем вы вызываете один из его методов, чтобы указать, какой областью ограничить рисунок.В настоящее время я использую его для создания индикатора выполнения, поэтому я точно знаю, что он отлично работает.

0 голосов
/ 07 сентября 2011

Получите [sprite displayedFrame], измените frame этого и создайте новый спрайт с этим spriteframe: CCSprite *sprite2 = [CCSprite spriteWithSpriteFrame:frame]

...