我正在寻找一种掩盖图层并通过矩形显示图层内容的方法(实际上我想要多个矩形来显示底层的内容)。
我遇到了类似的问题: 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错误...
答案 0 :(得分:0)
您可以使用cocos2d 2.0中的着色器执行此操作。看看这个教程。
http://www.raywenderlich.com/4428/how-to-mask-a-sprite-with-cocos2d-2-0