2013-09-22 4 views
0

Я хочу, чтобы мое приложение могло подсчитывать количество кранов каждую секунду. Я предполагаю, что это будет связано с touchesBegan:..., но это не работает на кнопке, не так ли? Во всяком случае, как бы я измерил количество кранов в секунду? Я думаю, что могу сделать это вручную, используя счетчик, который сбрасывается каждую секунду, но мне было интересно, есть ли лучший способ. Может ли он добавить значения в массив? И если да, смогу ли я вычислить среднее значение, исключая 0?Как подсчитать количество отводов в секунду

Мой текущий код.

-(void) timer:(NSTimer *)averageTimer { 
    if(tapCountInLastSecond != 0) { 
     secondsElapsed++; 
     averageTapsPerSecond += tapCountInLastSecond/secondsElapsed; 
     tapCountInLastSecond = 0; 
     NSLog(@"Average: %f", averageTapsPerSecond); 
    } 
} 
+0

Это довольно просто, в зависимости от того, что вы хотите сделать, но во-первых, как вы планируете остановить подсчет кранов? и чего вы пытаетесь достичь? –

+0

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

+0

Если вы прекратите отсчет времени, когда не будут сделаны краны, которые не будут работать, вам нужно иметь таймер, который всегда включен, я представляю себе, как вам нужно быстрее нажимать, чтобы переместить изображение вверх, и когда вы не нажимаете на изображение, которое начинает двигаться вниз, я правильно понял? –

ответ

3

в вашем ViewController поставить эти счетчики

int tapCountInPastSecond = 0; 
float averageTapsPerSecond = 0; 
int secondsElapsed  = 0; 

Затем добавьте этот метод, который вызывает, когда вы экран или нажмите кнопку

- (void)incrementTapCount 
{ 
    tapCountInPastSecond++; 
} 

Создать таймер, который будет срабатывать каждый второй, выполняя расчеты, затем сбрасывает количество отводов

- (void)timerActions 
{ 
    secondsElapsed++; 
    averageTapsPerSecond = (averageTapsPerSecond*(secondsElapsed-1) +tapCountInPastSecond)/secondsElapsed; 
    tapCountInpastSecond = 0; 
} 

Теперь вы можете инициализировать таймер так:

[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerActions) userInfo:Nil repeats:YES]; 

Тогда в любой момент вы сможете получить средние Отводы/Second считывая значение averageTapsPerSecond

Надеется, что это имеет смысл для вас

+0

Я реализовал это. Однако среднее значение может увеличиваться, но не уменьшаться, например, если среднее значение, если 5 и я нажимаю один раз в секунду, среднее значение не будет уменьшаться. Ill изменить мой пост, чтобы показать вам код. –

+0

Даже если удалить оператор if, среднее значение не может идти вниз. –

+1

, чтобы получить правильное среднее значение, измените его так: averageTapsPerSecond = (averageTapsPerSecond * (secondsElapsed-1) + tapCountInPastSecond)/secondsElapsed; – erkanyildiz

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