0

cocos2d アプリ内でいくつかのプリミティブを描画する必要があります。描画をカプセル化するために、メソッドを上書きするカスタム CCSprite を作成しましたdraw

@implementation EnergyBar

-(id) init {
    if(self=[super init]){
        [self setAnchorPoint:ccp(0,0)];
    }
    return self;
}

-(void) draw
{
    [super draw];

    glEnable(GL_LINE_SMOOTH);
    glColor4ub(80, 80, 80, ENERGY_ALPHA);
    glLineWidth(1);




    CGPoint vertices2[] = { ccp(0,0),
        ccp(ENERGY_WIDTH,0),
        ccp(ENERGY_WIDTH,ENERGY_HEIGHT),
        ccp(0,ENERGY_HEIGHT)
    };
    ccDrawPoly(vertices2, 4, YES);

}

ノードは期待どおりに長方形を描画します。このノードを の子として追加しようとするとすぐにCCSpriteBatchNode、例外が発生します'NSInternalInconsistencyException', reason: 'CCSprite is not using the same texture id'。このノード内では、親のスプライト マップで定義されたタイルを使用したくありません。では、このノードをCCSpriteBatchNodeこの例外を回避する子として追加するにはどうすればよいでしょうか?

4

1 に答える 1

2

あなたはそれを行うことはできません:)

の目標CCSpriteBatchNodeは、親がバッチ呼び出しですべての子を描画することです (そのため、draw呼び出されません)。スプライトを別の親 ( ではない) に追加する必要がありますCCSpriteBatchNode

于 2012-04-05T11:43:06.653 に答える