2013-03-16 2 views
0

Итак, я создал класс под названием «Ягоды», который расширяет CCSpriteBatchNode. Ягоды в основном похожи на монеты в моей игре, добавляя к значению, если «столкнулись». Это код, который я имею в своем классе Ягоды для CCSpriteBatchNode:Добавление потока спрайтов с использованием CCSpriteBatchNode в cocos2d?

- (id) init 
{ 
    if((self = [super init])) 
    { 
     CCSpriteBatchNode* berryBatch1 = [CCSpriteBatchNode batchNodeWithFile:@"One.png"]; 
     [self addChild:berryBatch1]; 

     CCSpriteBatchNode* berryBatch2 = [CCSpriteBatchNode batchNodeWithFile:@"Two.png"]; 
     [self addChild:berryBatch2]; 

     CCSpriteBatchNode* berryBatch3 = [CCSpriteBatchNode batchNodeWithFile:@"Three.png"]; 
     [self addChild:berryBatch3]; 

     for (int i = 0; i < 100; i++) 
     { 
      CCSprite* berry1 = [CCSprite spriteWithFile: @"One.png"]; 
      [berryBatch1 addChild:berry1]; 

      CCSprite* berry2 = [CCSprite spriteWithFile: @"Two.png"]; 
      [berryBatch2 addChild:berry2]; 

      CCSprite* berry3 = [CCSprite spriteWithFile: @"Three.png"]; 
      [berryBatch3 addChild:berry3]; 
     } 
     numBerries = 
    } 
    return self; 
} 

numBerries является ИНТ, что я сделал. Я пытаюсь выяснить количество ягод во всех трех CCSpriteBatchNodes, так что, когда я создаю метод detectCollision, я могу использовать его в цикле for.

Любые идеи?

+0

Почему ягоды подкласс CCSpriteBatchNode? Мне кажется, что для этого вполне достаточно подклассификации CCNode. – LearnCocos2D

+0

Потому что класс все о создании CCSpriteBatchNode? – Surz

+0

Но вы не используете его как пакетный спрайт-узел. Это не то, что наследование используется/полезно! Вы хотите наследовать, если ваш подкласс «похож на суперкласс», но не тогда, когда он «использует суперкласс». Вы создали совокупный класс, который является правильным способом делать то, что вы хотите сделать, но вы не должны подклассифицировать класс, который вы просто используете внутри своего класса. Измените его на подкласс из CCNode. До сих пор работает класс ягод? Да. Поэтому подкласс CLSpriteBatchNode не требуется. Кроме того, теперь вы можете добавлять другие объекты в ягоды (CCSpriteBatchNode разрешает только детям CCSprite). – LearnCocos2D

ответ

0

Это просто:

numBerries = berryBatch1.children.count + 
      berryBatch2.children.count + 
      berryBatch3.children.count; 
+0

Спасибо! К сожалению, я получаю сообщение об ошибке: «CCSpriteBatchNode поддерживает только CCSprites как дети», с моим CCSpriteBatchNode:/ – Surz

+0

См. Мой комментарий к вопросу. Это связано с тем, что вы подклассифицировали CCSpriteBatchNode, когда вам не нужно. Вместо этого используется подкласс CCNode. Класс «Ягоды» не является узлом пакетной спрайты, потому что ваше намерение состоит не в том, чтобы изменять/улучшать работу надстроки спрайтов, т. Е. Как он отображает спрайты на экране и другую логику пакетной справки. – LearnCocos2D

Смежные вопросы