我有一个数组,一个定时器,每隔5秒就向我的数组添加一个新对象,但是遇到了一个小问题。我有一个可重复调用的代码,它移动我的数组中的对象但由于某种原因,当一个新对象生成到我的数组中时,生成的前一个对象将停止移动。如何调用数组中的每个对象,而不是仅生成最后一个对象?
这是我调用移动对象的代码:
for (UIView *astroids in astroidArray) {
int newX = astroids.center.x + 0;
int newY = astroids.center.y + 1;
astroids.center = CGPointMake(newX,newY);
}
编辑抱歉,这是我的数组代码:
// spawn the astroids every few seconds randomly along the x axis
// and remove them once they get off the screen
if ((gameStarted == YES) && (gameOver == NO)) {
int randomX = arc4random() % 320;
astroidArray = [[NSMutableArray alloc] init];
UIImage *astroid = [UIImage imageNamed:@"astroidwhite.png"];
UIImageView *astroids = [[UIImageView alloc] initWithImage:astroid];
//set X and Y of the new imageView
astroids.center = CGPointMake(randomX , -10);
//add to array
[astroidArray addObject:astroids];
//add to the view, so it gets displayed.
[self.view addSubview: astroids];
[astroids release];
}
答案 0 :(得分:2)
看起来每次分配新的小行星时都会分配一个新数组。然后,您将新的小行星添加到数组中,因此它是阵列中唯一的小行星。
因此,当你遍历数组时,它上面只有一个小行星。
<强>更新强>
那么,为了解决这个问题,请分配一次数组(在游戏启动期间?)。不要每次都创建一个新数组。
这部分:
astroidArray = [[NSMutableArray alloc] init];
...应该只发生一次,而不是每次创建一个新的小行星。