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 回答