这是我的代码:
-(void) createNewBall {
UIImage * image = [UIImage imageNamed:@"bulle_03.png"];
bulleBouge = [[UIImageView alloc] initWithImage:image];
[bulleBouge setCenter:[self randomPointSquare]];
[[self view] addSubview:bulleBouge];
}
-(void)moveTheBall{
bulleBouge.center = CGPointMake(imageView.center.x + X, imageView.center.y + Y);
}
每两秒调用一次{p> createNewBall
。我的问题是,创建的每个bulleBouge
在两秒钟后停止移动。我不知道为什么。
我该如何解决这个问题?
答案 0 :(得分:3)
停止移动b / c你每两秒钟初始化一次新的bulleBouge。你也是在泄漏记忆,因为你在给它赋予新价值之前从不贬低它。所以会发生的是,在你创建imageView之后,你只保留对lasts实例的引用,因此只有最后一个是改变位置。要修复此存储,请将所有新的uiImageView存储在一个数组中,并在两秒后随机移动它们。
-(void) createNewBall {
UIImage * image = [UIImage imageNamed:@"bulle_03.png"];
UIImageView *bulleBouge = [[UIImageView alloc] initWithImage:image];
[bulleBouge setCenter:[self randomPointSquare]];
[bulleBougeArray addObject:bulleBouge];
[[self view] addSubview:bulleBouge];
[bulleBouge release];
}
-(void)moveTheBall{
for(int i=0; i< [bulleBougeArray count];i++){
UIImageView *bulleBouge = [bulleBougeArray objectAtIndex:i];
bulleBouge.center = CGPointMake(imageView.center.x + X, imageView.center.y + Y);
}
}
答案 1 :(得分:0)
塞浦路斯是正确的。在一个更简单的形式中,您将在同一个变量下每两秒创建一个新的bulleBouge。该程序已有一个,但由于你告诉它在同一个ivar下制作一个新的,它会忘记旧的,因此不会移动它。你需要一个数组,这样每个球都可以单独记住,因此可以单独移动,如他发布的示例代码所示。