Цель C: Boolean не работает.Нужно внешнее мнение - PullRequest
0 голосов
/ 03 августа 2011

Когда пользователь касается экрана, он смотрит на логическое значение if и запускает таймер, когда значение равно NO.Он устанавливает его на YES, поэтому пользователь не может запустить его снова, когда он идет.Когда таймер заканчивает то, что он делает, он устанавливает его обратно на NO.Значение инициализируется в методе viewDidLoad.Это работает один раз, но не будет работать снова.Судя по всему, это ДОЛЖНО работать.Может кто-нибудь увидеть, что с этим не так:

 - (void) fireLoop {

    fireImage.hidden = 0;
    fireImage.center = CGPointMake(fireImage.center.x, fireImage.center.y - 20);
    if (fireImage.center.y == -5) {
        [fireTimer invalidate];
        fireImage.hidden = 1;
        firedOn = NO;
    }
}

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

if (firedOn == NO) {
    firedOn = YES;
     //set fire image position to player position
    fireImage.center = CGPointMake(playerImage.center.x, playerImage.center.y);
    fireTimer = [NSTimer scheduledTimerWithTimeInterval:1.0/30 target:self selector:@selector(fireLoop) userInfo:nil repeats:YES];
}  
}

1 Ответ

4 голосов
/ 03 августа 2011

Вы сбрасываете переменную firedOn, только если fireImage.center.y точно равен -5 - проверьте, действительно ли это так. Если нет - вам, вероятно, нужно настроить это условие (проверьте, например, если y меньше -5 или оно лежит в некотором интервале вместо 1 точного значения)

...