0

背景:我使用的是 XCode 3.1.4,请记住这一点。但是,请不要对此发表评论。

我必须按下按钮,开火并开始。当按下 fire 时,会使用 IBAction 函数创建一个名为 one 的 UIImageView。按下 start 时,会创建一个名为 2 的 UIImageview。然后,当在 IBACtion 函数中创建 *one 时,我使用将 *one 作为 userinfo 参数传递的 NSTimer 调用另一个函数。然后我有一个移动函数,它沿 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]; 

}  
4

0 回答 0