正如我在上一篇文章中向我建议的那样,以下代码将来自加速度计的数据作为分配的“分钟”: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;
}
}
我知道我的第二个 if 块中的代码不是有效的 Objective-C ..这只是为了让您了解我的目标..