Cocos2d iPhone - 雪碧剪裁/面具/框架

Bac*_*ach 14 cocos2d-iphone

我如何剪辑/裁剪/掩码或只是在Cocos2D中设置CCSprite的框架?

类似于:为UIView设置框架,剪切子视图= TRUE

我的CCSprite Main Sprite添加了多个Child Sprite.我只希望主Sprite精灵的Mask部分可见.有没有办法剪辑或使用CCSprite的掩码?

我可以在顶部剪切背景和图层,只留下那个可见区域,但这是唯一的方法吗?!

这是一个示例图像,展示了我想要实现的目标: alt text http://dnamique.com/maskSprite.jpg

Bac*_*ach 16

我最终使用了GL_SCISSOR.

在MainSprite中我强制要求:

- (void) visit
{
    if (!self.visible) {
        return;
    }
    glEnable(GL_SCISSOR_TEST);
    glScissor(x, y, width, height);   
    [super visit];
    glDisable(GL_SCISSOR_TEST);
}
Run Code Online (Sandbox Code Playgroud)

这将剪切或屏蔽指定区域.

唯一棘手的一点是,在横向模式下,Cocos2D在屏幕的左下角有0,0,而OpenGL在右下角有,因为它不考虑屏幕的方向.

换句话说,对于OpenGL,请考虑使用旋转的纵向屏幕.


Lea*_*s2D 12

我编写了一个ClippingNode类,它就是这样做的.您可以将其他节点(精灵,标签等)添加到ClippingNode,它们只会在ClippingNode指定的区域中绘制.它还需要考虑设备轮换.

在内部,它使用GL_SCISSOR_TEST,就像在巴赫的回答中一样.

http://www.learn-cocos2d.com/2011/01/cocos2d-gem-clippingnode/