Cocos2d iphone 剪辑添加到CCSpriteBatchNode的CCSprite

Cocos2d iphone 剪辑添加到CCSpriteBatchNode的CCSprite,cocos2d-iphone,ccsprite,clipping,ccspritebatchnode,Cocos2d Iphone,Ccsprite,Clipping,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

我正在用以下代码剪辑我的精灵:

//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时,它不会剪辑精灵。。。它显示精灵,但不剪切它

有人能帮我解决这个问题吗?我在谷歌上到处搜索都没有答案

我还使用了中的ClippingNode类,但将其添加到CCSpriteBatchNode时也遇到问题


任何帮助都将不胜感激。

剪辑或任何自定义图形都不能与批处理的精灵一起使用


CCSpriteBatchNode不会对其子对象调用visit(或draw)方法,因为批处理节点将接管子对象的渲染。因此,当sprite批处理sprite时,您在CCSprite的draw或visit方法中编写的任何代码都将无效。

感谢您的解释,我想我必须将它们直接添加到主层。有更好的方法吗?再次感谢!