背景:
我正在使用 x-code 3.1.4 版和 iphone 模拟器 3.1 版。
现在我正在构建一个游戏,其中汽车(由 UIImageView 描绘)使用两个按钮(左和右)左右移动。那部分工作正常。但是,我试图在顶部随机生成 UIImageViews,它们将以恒定的速率下降。我可以使用这个来移动一个 UIImageView:
-(void)moveMeteor{
iv.center=CGPointMake(iv.center.x, iv.center.y + 1);
[self performSelector:@selector(moveMeteor) withObject:iv afterDelay:0.01];
}
其中 iv 是 UIImageView ,当我单击按钮时调用此函数。但是,我想创建随机生成的 UIImageViews。所以,我使用以下代码做到了这一点:
-(void)addViews: (NSTimer *) aTimer {
UIImageView *iv = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"Meteor.png"]];
CGRect rect = CGRectMake(arc4random() % (350), arc4random() % (5), 35, 35);
[iv setFrame:rect];
[self.view addSubview:iv];
}
我通过单击执行此操作的开始按钮来调用此函数:
[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(addViews:) userInfo:nil repeats:YES];
我考虑通过将 addViews 函数更改为来使用标签:
-(void)addViews: (NSTimer *) aTimer {
UIImageView *iv = [[UIImageView alloc]initWithImage [UIImage imageNamed:@"Meteor.png"]];
CGRect rect = CGRectMake(arc4random() % (350), arc4random() % (5), 35, 35);
[iv setFrame:rect];
[self.view addSubview:iv];
iv.tag=tagStart;
[self moveMeteor:tagStart];
tagStart = tagStart+1;
}(tagStart的初始值为1);
并将移动功能更改为:
-(void)moveMeteor:(int)tag{
UIImageView *test= (UIImageView *)[self.view viewWithTag:tagStart];
test.center=CGPointMake(test.center.x, test.center.y + 1);
[self performSelector:@selector(moveMeteor) withObject:tagStart afterDelay:0.01];
[test release];
我对如何解决这个问题感到非常困惑。问题是我的 move 函数一次不能处理这么多移动的东西,我的标签系统有问题,我的 *test 有问题,或者我同时调用了许多函数,或者其他什么。请帮助并为我解决这个烦人的问题。