我正在用这段代码剪辑我的精灵:
//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 时,它不会剪切精灵……它会显示精灵,但不会剪切它。
有人可以帮我解决这个问题,我到处都用谷歌搜索,没有答案。
我还使用了Steffen Itterheim的 ClippingNode 类,但我也遇到了将它添加到 CCSpriteBatchNode 的问题。
任何帮助将不胜感激。