我必须在 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
规避此异常的子节点?