2014-03-18 5 views
0

Я отношусь к Xcode, и я делал небольшую игру для iPhone, предназначенную для забавы, и у меня есть некоторые проблемы, так как некоторые виды спрайтов исчезают, когда они появляются.Коснитесь, чтобы исчезнуть

Коротко: Так в основном я спрайт Нерест на экране каждый раз, через каждые 0,70 секунды и спрайт установлен в глобальной переменной IBOutlet под названием «Круг». Эти круги появляются в случайных местах вокруг экрана iPhone по произвольной ширине и высоте.

В целом
Поэтому в основном я пытаюсь сделать так, чтобы при нажатии на точный круг, она лишь скрывает, что мяч.

Спасибо. Кроме того, извините моды для неаккуратного форматирования.

Вот код в файл, который релевантно:
GameController.m

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.gameState = GameStatePaused; 
    circleVerlocity = CGPointMake(CircleSpeedX, CircleSpeedY); 
    [NSTimer scheduledTimerWithTimeInterval:SpawnSpeed target:self selector:@selector(addCircle:) userInfo:nil repeats:YES]; 
    [NSTimer scheduledTimerWithTimeInterval:BallSpeed target:self selector:@selector(gameLoop) userInfo:nil repeats:YES]; 
} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

-(void)addCircle: (NSTimer *) aTimer { 

    if(gameState == GameStateRunning) 
    { 
     UIImageView *Circle1 = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"sprite-small-1.png"]]; 
     self.Circle = Circle1; 
     CGRect rect = CGRectMake(arc4random() % (274), arc4random() % (532), 50, 50); 
     [Circle1 setFrame:rect]; 
     [self.view addSubview:Circle1]; 
    } 
} 

-(void)gameLoop 
{ 
    if(gameState == GameStateRunning) 
    { 
     Circle.center = CGPointMake(Circle.center.x + circleVerlocity.x, Circle.center.y + circleVerlocity.y); 

     if(Circle.center.x > self.view.bounds.size.width || Circle.center.x < 0) 
     { 
      circleVerlocity.x = -circleVerlocity.x; 
     } 

     if(Circle.center.y > self.view.bounds.size.height || Circle.center.y < 0) 
     { 
      circleVerlocity.y = -circleVerlocity.y; 
     } 

    }else{ 
     if(tapToBegin.hidden) 
     { 
      tapToBegin.hidden = NO; 
     } 
    } 
} 

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch *touch = [touches anyObject]; 

    if(gameState == GameStatePaused) 
    { 
     tapToBegin.hidden = YES; 
     gameState = GameStateRunning; 
    } 

    if([touch view] == Circle) 
    { 
     Circle.hidden = YES; 
    } 
} 

ответ

0

Вы можете использовать GestureRecognizer в вашем кругу. с классом UITapGestureRecognizer можно добавить распознаватель к элементу,

circle.userInteractionEnabled = YES; 


    UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideThatBall)]; 
    [circle addGestureRecognizer:tapGesture]; 


-(void)hideThatBall{ 
    circle.hidden = YES; 
} 

Я хотел бы использовать что-то вроде этого

+0

Ах ок спасибо !! Где бы вы порекомендовали я поместил материал userintraction в свой код? : P – SirTiggs

+0

Обычно я добавляю его, когда создаю объект, круг в вашем случае. Я также добавляю tapGesture после создания объекта – croigsalvador

+0

О, проигнорируйте это. Ага. Да, у меня есть некоторые проблемы, когда появляются на экране и идут, но некоторые остаются там, и когда я нажимаю на них, они не исчезают? Это странно. – SirTiggs

Смежные вопросы