Я отсечение мой спрайт с этим кодом:Клип CCSprite добавлен в CCSpriteBatchNode
//At my CCSprite subclass m.
-(void)visit
{
CGPoint worldOrg = [self convertToWorldSpace:ccp(0, 0)];
CGPoint dest = [self convertToWorldSpace:ccp(self.contentSize.width, self.contentSize.height)];
CGPoint dims = ccpSub(dest, worldOrg);
glEnable(GL_SCISSOR_TEST);
glScissor(worldOrg.x, worldOrg.y, dims.x, dims.y);
#define SHOW_CLIPPED_AREA 1
#if SHOW_CLIPPED_AREA
//Draws a red rectangle showing clipped area
ccDrawSolidRect(ccp(0, 0), ccp(1024, 1024), ccc4f(64, 0, 0, 128));
#endif
[super visit];
glDisable(GL_SCISSOR_TEST);
}
Тогда просто создать спрайт, как обычно, настроить свойство sprite.contentSize на то, что мне нужно:
CCSprite aSprite = [CCSprite spriteWith...];
aSprite.contentSize = CGSizeMake(20,20);
//Add it to my layer
[self addChild:aSprite];
И он работает так, как ожидалось!
Проблема ...
При добавлении его в CCSpriteBatchNode, это обыкновение клип спрайт ... он показывает спрайт, но не обрезая ее.
Может кто-то, пожалуйста, помогите мне с этим, я googled везде без ответа на это.
Я также использовал класс ClippingNode от Steffen Itterheim, но у меня также есть проблемы с добавлением его в CCSpriteBatchNode.
Любая помощь будет оценена по достоинству.
Спасибо за ваше объяснение, я думаю, мне придется добавить их прямо в основной слой. Есть ли лучший подход для этого? Еще раз спасибо! –