0
我必須在cocos2d應用程序中繪製一些原始圖元。爲了封裝圖形,我創建了一個自定義的CCSprite,我正在覆蓋draw
方法。Cocos2d:創建沒有內容的精靈
@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
的子節點來避免這個異常呢?
批處理節點負責繪製與能量棒相關的對象。以合乎邏輯的方式,僅僅因爲cocos2d希望孩子繪製一個精靈而將這兩個對象分開是沒有意義的。真的沒有辦法做到這一點? (例如,手動設置某種被檢查以確定是否引發此異常的屬性? – gorootde 2012-04-05 11:49:01
沒有理由不能將您的批處理節點和自定義節點添加爲位於X,Y的空CCNode的子節點,並保留某些部分你的封裝,你只是不能在批處理繪製操作中繪製不屬於批處理的東西。 – badgerr 2012-04-05 14:56:33