如何比较一个常量值和每次循环中持续更新的加速度计值?
正如我在之前的一篇文章中所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与你在循环中需要的值进行比较。
希望这可以帮助。
问候,
乔治