如何比较一个常量值和每次循环中持续更新的加速度计值?

正如我在之前的一篇文章中所build议的那样 ,下面的代码将来自加速度计的数据作为“分钟”赋值: CMAccelerometerData * data = [manager accelerometerData]; 然后从该数据中提取在x轴上执行的加速度,并将其值存储在双倍(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-block中的代码是无效的Objective-C ..这只是给你一个我要去的想法..

这有一个简单的解决scheme。

1)声明一个实例variablesx,每次加速度传感器告诉你时都会更新它。

2)将这个x与你在循环中需要的值进行比较。

希望这可以帮助。

问候,

乔治