通过cocos2d“切出”矩形显示图层的内容?

时间:2012-08-30 06:06:04

标签: cocos2d-iphone

我正在寻找一种掩盖图层并通过矩形显示图层内容的方法(实际上我想要多个矩形来显示底层的内容)。

我遇到了类似的问题: Cocos2d iPhone - Sprite cliping/mask/frame

哪个有解决方案: http://www.learn-cocos2d.com/2011/01/cocos2d-gem-clippingnode/

然而,当我尝试使用这个类时,我收到警告:“隐式声明函数'glPushMatrix'在C99中无效”......我也得到错误:“在类型的对象上找不到属性'deviceOrientation' 'CCDirector *'“

我需要做些什么才能使用最新版本的cocos2d?

...无论如何,我注释掉了deviceOrientation的东西,只是为了测试它是否会起作用,而且它似乎不是。

我有一个CCBatchNode:

    sheet = [CCSpriteBatchNode batchNodeWithFile:@"bg.png" capacity:500];

然后我添加了许多精灵

    [sheet addChild:sprite1];
    [sheet addChild:sprite2];
    [sheet addChild:sprite3];

然后我制作剪辑节点层

ClippingNode *clipNode = [ClippingNode node];
clipNode.clippingRegion = CGRectMake(50, 50, 200, 200);

然后我添加精灵表和clipNode:

[layer addChild:sheet];
[layer addChild:clipNode];

然后我将它添加到CCSprite对象

[self addChild:layer];

...

结果是,我从工作表中看到了我的许多精灵,但是没有剪贴蒙版..我的控制台显示了一百万:“OpenGL错误0x0502 in - [CCTextureAtlas drawNumberOfQuads:fromIndex:] 556”

所以.....我不确定我做错了什么 - 或者这是否与openGL警告和设备方向错误有关......?

更新:我添加了#include< OpenGLES / ES1 / gl.h>到ClippingNode.m,它摆脱了glpush / pop警告..但是一旦我将clipNode子项添加到图层中,仍会导致相同的OpenGL错误...

1 个答案:

答案 0 :(得分:0)

您可以使用cocos2d 2.0中的着色器执行此操作。看看这个教程。

http://www.raywenderlich.com/4428/how-to-mask-a-sprite-with-cocos2d-2-0