Проблема в последнем блоке кода.Вы должны сделать локальную ссылку на каждый CCSprite в вашем цикле for.
Поскольку вы добавили спрайты в self
, вы получите их как потомков self
for (i = 1; i < 4; i++){
CCSprite * enumHurdle = [self getChildByTag:i];
enumHurdle.position = CGPointMake(enumHurdle.position.x - 5, 10);
}
Beбудьте осторожны, если вы создадите другие спрайты таким же образом в той же сцене.Неправильно назначать любые два спрайта одному и тому же тегу.
ПРАВКА, чтобы избежать дублирования тегов.
Если вы знаете, сколько у вас будет спрайтов.Используйте перечисление тегов и обращайтесь к спрайтам по имени.
Если нет, то, зная, сколько групп и устанавливая ограничение на размер групп, можно сделать его управляемым.
т.е., скажем, у вас есть3 части кода, где вы генерируете спрайты, подобные этому.Вы можете включить enum
в свой .m (в строке @implementation) и поставить там ограничения
// Choose names that describe the groups of sprites
enum { kGroupOne = 0, // limiting the size of each group to 100
kGroupTwo = 100, // (besides the last group, but that is not important)
kGroupThree = 200,
};
Затем при создании каждой группы
// group 1
for (i = kGroupOne; i < 4; i++){
// set up code here
}
// group 2
// g2_size is made up, insert whatever you want
for (i = kGroupTwo; i < g2_size; i++) {
// set up code here
}
.
.
.
Затем для получения вгруппы
for (i = kGroupOne; i < 4; i++){
CCSprite * enumHurdle = [self getChildByTag:i];
enumHurdle.position = CGPointMake(enumHurdle.position.x - 5, 10);
}
.
.
.
Надеюсь, это пробудит ваше творчество.Теперь повеселимся.