2013-06-21 4 views
0

В рудиментарной тестовой функции шаблона, найденной мной для игры cocos2d, автор использовал следующее, чтобы определить, какие объекты должны преформировать тест попадания во время цикла цикла.Функциональность CCNode.children - это избыточный код?

for (Enemy *someEnemy in self.children) { 

    if ([someEnemy isKindOfClass:[Enemy class]]) { 
    ... 
    } 
} 

Может ли кто-нибудь уточнить особенности, отобранные .children? Более конкретно, действительно ли утверждение if в приведенном выше коде необходимо?

+0

После дальнейших размышлений, я полагайте, что это может иметь больше общего с функциональностью этого конкретного цикла; он фактически не возвращает только объекты, принадлежащие классу Enemy, не так ли? –

ответ

1

.children вернет массив всех узлов, добавленных как дочерний элемент на узел.

если добавить 4 детей на self

[self addChild:node1]; 
[self addChild:node2]; 
[self addChild:node3]; 
[self addChild:node4]; 

тогда children вернет эти 4 узла

NSLog(@"children: %@", self.children); 

... Ваша консоль покажет 4 детей

+0

Так что, если я использую для (OBJECT_CLASS * tempObject в self.children) {...}, он фактически не устанавливает * tempObject только для членов класса OBJECT_CLASS? Судя по поведению, которое я испытывал, это, кажется, следует. –

+1

Вы правы. Он будет улавливать все объекты массива, неважно, насколько они классны. Если вы хотите проверить класс объекта на массиве, вы можете использовать «if ([tempObject isKindOfClass: (класс TheClass)])» – Bivis

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