有些时候,我们需要对 cocos2d 中的 Sprite 进行裁剪,方法有不少,这里提供一种快捷的方法:那就是使用 GL_SCISSOR。

我们在要处理的 Sprite 的类里面加入如下代码:

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//
//
- (void) visit
{
if (!self.visible) {
return;
}
glEnable(GL_SCISSOR_TEST);
// x, y 为起点坐标
// width, height 为宽和高
glScissor(x, y, width, height);
[super visit];
glDisable(GL_SCISSOR_TEST);
}
//
//

要注意的是:这里的坐标指的是左下角为(0, 0),然后向上延伸。

另外这个方法的问题在于:由于是 OpenGL 的方法,它对屏幕旋转没有作用,但是相信在使用的时候,一般都是固定一个方向的。(这里所说的“一个”方向是指 Landscape 或者 Portrait 方向,来回颠倒是不受影响的)