Я работаю над клоном Tetris в Cocos2d для iPhone, и я использую класс Sprites для отдельных блоков и класс Tetromino CocosNode, который пользователь контролирует для перемещения блоков. Все эти блоки перемещаются в виде сетки 20 на 10 пустых блоков на GameBoardLayer.
Когда блок заканчивает падать, я хотел бы выпустить Tetromino и прикрепить его дочерние блоки к GameBoardLayer, чтобы позволить им перемещаться независимо и создать новое Tetromino для пользователя.
Я попытался переопределить removeChild: в слое:
- (void)removeChild: (CocosNode*)child cleanup:(BOOL)cleanup
{
if ([child isEqual:userTetromino]) {
for (Block *currentBlock in userTetromino.children) {
[self addChild:currentBlock];
[userTetromino removeChild:currentBlock cleanup:YES];
}
}
[super removeChild:child cleanup:cleanup];
}
Но, похоже, я не могу добавить дочерний элемент дважды, поскольку он уже является дочерним элементом Layer через Tetromino. Есть мысли?