Калибровать акселерометр? - PullRequest
2 голосов
/ 17 сентября 2011

Я знаю, что это очень общий и расплывчатый вопрос, но мне любопытно, как добавить эту функциональность в мое приложение как можно проще. Я вижу много игр, Doodle Jump - мой пример № 1, где он позволяет вам откалибровать акселерометр, так что если вы сидите боком, игра будет работать как новая. Как они это делают? Мне нужна та же функциональность в моем приложении, но я не уверен, что делать и куда идти, чтобы добиться этой функциональности.

Спасибо!

1 Ответ

2 голосов
/ 17 сентября 2011

Вы можете считать «калибровку» постоянной ссылкой на какое-либо корневое значение или состояние. Если вы хотите сбросить калибровки, просто сбросьте корневое значение, из которого получены все остальные значения. С акселерометром у вас есть возможность узнать, когда изменение обнаружено с помощью обратного вызова делегата, поэтому все, что вам нужно сделать, это написать метод для «захвата» текущего состояния акселерометра.

В учебнике , описанном здесь , такой метод обозначен как:

-(void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
     calibration = acceleration.y;
}

Но это не так "контролируется", как хотелось бы. Вместо этого либо прервите свое отношение к UIAccelerometer в качестве делегата, либо окружите его свойством BOOL ean, указывающим, разрешите ли вы выполнять калибровку. Примерно так должно работать просто отлично:

-(void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
     if (self.allowsCalibration)
         calibration = acceleration.y;
}
...