私の以前の投稿で提案されたように、次のコードは、加速度計からのデータを「分」の割り当てとして取得します。CMAccelerometerData * data = [manager accelerometerData]; が実行され、そのデータからx軸に加えられた加速度が抽出され、その値がdouble(double x)に格納されます。
CMMotionManager* manager = [[CMMotionManager alloc] init];
CMAccelerometerData* data = [manager accelerometerData];
double x = [data acceleration].x;
保存された値が0.03であり、次のようにwhileループで使用したいとします。
while (x > 0)
{
// do something
}
上記のループは明らかに永久に実行されます
ただし、代わりに次のコードを使用した場合はどうなりますか?
CMMotionManager* manager = [[CMMotionManager alloc] init];
while([[manager accelerometerData] acceleration].x > 0)
{
// do something
}
ループを回るたびにゼロを別の値と比較しているのではないでしょうか。(とにかく、これが私のプロジェクトで目指していることです。)
何かご意見は?
私がこれを求めている理由は次のとおりです:
定期的にチェックし続けるのではなく、一定期間にわたってx軸からの値をチェックしたいので、基本的には次のようなループを作成します。
if ([[manager accelerometerData] acceleration].x > 0 )
{
// initialiseTimer
}
while ([[manager accelerometerData] acceleration].x > 0 )
{
if( checkTimer >=250ms )
{
stopTimer;
printOut("X-Axis acceleration was greater than zero for at least 250ms");
breakFromLoop;
}
}
2番目のif-blockのコードが有効なObjective-Cではないことを知っています。これは、私が何をしようとしているのかを理解するためだけのものです。