背景:我使用的是 XCode 3.1.4,请记住这一点。但请不要对此发表评论。
我必须按下按钮,点火并启动。当按下火时,会使用 IBAction 函数创建一个名为 one 的 UIImageView。当按下开始键时,会创建一个名为 2 的 UIImageview。然后,当在 IBACtion 函数中创建 *one 时,我使用 NSTimer 调用另一个函数,该 NSTimer 将 *one 作为用户信息参数传递。然后我有一个移动函数,它沿 y 轴移动 *1 个 20 像素。这非常有效,我可以创建数百个同时移动的 UIImageView。我对 start 做了同样的事情,但使用不同的 UIImage 和 *two 作为 userinfo 参数。这也很完美。但是,我想为通过单击这些按钮创建的 UIImageViews 创建一个碰撞检测器。由于分配给这些按钮的指针不是全局的,我不知道该怎么做。我在下面发布我的代码:
-(IBAction)startWaves:(id)sender {
start.hidden=YES;
fire.hidden=NO;
[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(createMeteors) userInfo:nil repeats:YES];
}
-(void)createMeteors{
UIImageView *one = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"Meteor.png"]];
CGRect rectOne = CGRectMake(arc4random() % (310), arc4random() % (1), 35, 35);
[one setFrame:rectOne];
[self.view addSubview:one];
[NSTimer scheduledTimerWithTimeInterval:0.4 target:self selector:@selector(moveMeteorOne:) userInfo:one repeats:YES];
}
- (void)moveMeteorOne:(NSTimer *)timerOne {
UIImageView *one = timerOne.userInfo;
one.center=CGPointMake(one.center.x, one.center.y + 15);
if (CGRectIntersectsRect(one.frame, image.frame)) {
background.image = [UIImage imageNamed:@"gameOver.png"];
fire.hidden = YES;
image.hidden=YES;
}
}
-(void)createBullets{
UIImageView *two = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"lazerBeam.png"]];
CGRect rectTwo = CGRectMake((image.center.x), (image.center.y - 45), 7, 20);
[two setFrame:rectTwo];
[self.view addSubview:two];
[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(moveBulletOne:) userInfo:two repeats:YES];
}
-(void)moveBulletOne:(NSTimer *)timerTwo {
UIImageView *two = timerTwo.userInfo;
two.center=CGPointMake(two.center.x, two.center.y - 15);
}
-(IBAction)fireBullets:(id)sender {
[self createBullets];
}
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)