2012-08-12 17 views
0

我使用CCSpriteBatchNode,但我得到了一些異常錯誤。這是我的代碼:CCSpriteBatchNode錯誤

//Use CCSpriteBatchNode.....!!! 

    CCSpriteBatchNode *singleGameSpriteBatchNode;  

    //if < 16 , create dice 

    unsigned int createDiceNumber = 4 - (maxDiceNumber%4) ; 
    for (int i = 0; i<createDiceNumber; i++) { 
     CCLOG(@"Total dice number = %d" , createDiceNumber); 
     int randomDiceNumber = arc4random()%17; 
     [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"singleGameImage.plist"]; 
     singleGameSpriteBatchNode = [CCSpriteBatchNode batchNodeWithFile:@"singleGameImage.png"]; 
     Dice *tempCreateDice = [[Dice alloc]initWithSpriteFrameName:[self getDicePicture:randomDiceNumber]]; 
     [singleGameSpriteBatchNode addChild:tempCreateDice]; 
     [self addChild:singleGameSpriteBatchNode z:5]; 
     [createDiceArray addObject:tempCreateDice]; 
     [tempCreateDice setPosition:ccp(40 , 220-(60*i))]; 
     [tempCreateDice setRecentPosition:ccp(40 , 220-(60*i))]; 
     [tempCreateDice setDiceType:randomDiceNumber]; 

     [tempCreateDice release]; 
     maxDiceNumber++; 
     mustMoveDiceNumber++; 
    } 
    CCLOG(@"length = %d" , [createDiceArray count]); 
} 

它成功地創建圖像的骰子。但是,當我使用ccTouchesBegan方法我得到一些錯誤信息:

*** Assertion failure in -[Dice draw], /Users/xxxxx/Documents/C_Program/iOs Practice(2011)/DiceGame/DiceGame/libs/cocos2d/CCSprite.m:576 
2012-08-13 02:32:47.921 DiceGame[11103:c07] *** Terminating app due to uncaught 
exception 'NSInternalInconsistencyException', reason: 'If CCSprite is being 
rendered by CCSpriteBatchNode, CCSprite#draw SHOULD NOT be called' 

PS:骰子是一類從CCSprite我創建繼承。

如果它不能使用CCSpriteBatchNode,也許我應該回去使用CCSprite

回答

1

你看過錯誤信息嗎?

'If CCSprite is being rendered by CCSpriteBatchNode, 
CCSprite#draw SHOULD NOT be called' 

請不要覆蓋-(void) draw方法或不要使用sprite批處理節點。

+0

我明白了!謝謝!! – 2012-08-13 04:21:46