レイヤーをマスクして、長方形を通してレイヤーのコンテンツを表示する方法を探しています(実際には、複数の長方形で下にあるレイヤーのコンテンツを表示する必要があります)。
私はこの同様の質問に出くわしました: Cocos2diPhone-スプライトクリッピング/マスク/フレーム
解決策がありました: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];
..。
その結果、シートから多くのスプライトが表示されますが、クリッピングマスクがありません。コンソールに100万が表示されます:「-[CCTextureAtlasdrawNumberOfQuads:fromIndex:]556のOpenGLエラー0x0502」
だから.....私は何が間違っているのかわかりません-またはこれがすべてopenGL警告とデバイスの向きのエラーに関係しているのかどうか...?
更新:#include <OpenGLES / ES1 / gl.h>をClippingNode.mに追加し、glpush / pop警告を取り除きました。ただし、clipNodeの子をレイヤーに追加すると、同じOpenGLエラーが発生します。 ..。。