1

cocos2d 1.1 で z-index を ccDrawPoly() に設定して、シーン内のすべての CCSprite の上にこれを描画するにはどうすればよいですか?

-(void)draw
{
    CGSize screenSize = [[CCDirector sharedDirector] winSize];
    glEnable(GL_LINE_SMOOTH);
    glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
    glColor4ub(0, 0, 255, 255);
    glLineWidth(2);
    CGPoint vertices2[] = { ccp(0,0), ccp(0,screenSize.height*0.5), ccp(screenSize.width*0.5,screenSize.height*0.5), ccp(screenSize.width*0.5,0) };
    ccDrawPoly(vertices2, 4, YES);

}
4

2 に答える 2

5

これを行うにはいくつかの方法があります。draw メソッドが CCNode の独自のサブクラスでオーバーライドされると仮定すると、次のようになります。

  • スプライトのどの z オーダーよりも大きい z オーダーで drawPoly ノードを追加します
  • 描画順序がスプライトのあるレイヤーよりも高い別のレイヤー (またはノード) に drawPoly ノードを追加します。

スプライトを子として含むクラスで draw メソッドがオーバーライドされる場合は、代わりに visit メソッドをオーバーライドする必要があります。次に、カスタム描画ポリゴン コードを実行する前に、まず [super visit] を呼び出します。

-(void) visit
{
    // draw node and children first
    [super visit];

    // draw custom code on top of node and its children
    ccDrawPoly( … );
}
于 2012-10-08T14:19:12.400 に答える
3

私の知る限り、すべての描画はゼロの zOrder で行われます。そのため、手動で描画したものの下にスプライトを描画したい場合は、負の zOrder でスプライトを追加できます。たとえば、addChild:methodを使用する代わりにaddChild:z:、 z valueを使用できます-1

于 2012-10-08T12:04:10.217 に答える