我正在寻找一种方法来屏蔽图层并通过矩形显示图层的内容(实际上我想要多个矩形来显示底层的内容)。
我遇到了这个类似的问题: Cocos2d iPhone - Sprite cliping/mask/frame
有一个解决方案:http: //www.learn-cocos2d.com/2011/01/cocos2d-gem-clippingnode/
但是,当尝试使用此类时,我收到警告:“函数 'glPushMatrix' 的隐式声明在 C99 中无效”......我还收到错误消息:“在 'CCDirector * 类型的对象上找不到属性 'deviceOrientation' '"
我需要做什么才能让它与最新版本的 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警告和设备方向错误有关......?
更新:我在 ClippingNode.m 中添加了#include <OpenGLES/ES1/gl.h>,它消除了 glpush/pop 警告。但是一旦我将 clipNode 子节点添加到图层中,仍然会导致相同的 OpenGL 错误...