我想创建一个简单的应用程序,当我将手机在 Y 轴上从起点移动到终点时,它会在屏幕上绘制一条简单的线,例如从点 a(0,0) 到点 b(0, 10)请帮忙
演示:
我想创建一个简单的应用程序,当我将手机在 Y 轴上从起点移动到终点时,它会在屏幕上绘制一条简单的线,例如从点 a(0,0) 到点 b(0, 10)请帮忙
演示:
您需要初始化运动管理器,然后检查motion.userAcceleration.y
适当的加速度值(以米/秒/秒为单位)。
在下面的示例中,我检查了 0.05,我发现这是手机相当不错的向前移动。我也等到用户显着放慢速度(-Y 值)再进行绘制。调整设备 MotionUpdateInterval 将决定您的应用对速度变化的响应能力。现在它以 1/60 秒采样。
motionManager = [[CMMotionManager alloc] init];
motionManager.deviceMotionUpdateInterval = 1.0/60.0;
[motionManager startDeviceMotionUpdatesToQueue:[NSOperationQueue currentQueue] withHandler:^(CMDeviceMotion *motion, NSError *error) {
NSLog(@"Y value is: %f", motion.userAcceleration.y);
if (motion.userAcceleration.y > 0.05) {
//a solid move forward starts
lineLength++; //increment a line length value
}
if (motion.userAcceleration.y < -0.02 && lineLength > 10) {
/*user has abruptly slowed indicating end of the move forward.
* we also make sure we have more than 10 events
*/
[self drawLine]; /* writing drawLine method
* and quartz2d path code is left to the
* op or others */
[motionManager stopDeviceMotionUpdates];
}
}];
请注意,此代码假定手机平放或略微倾斜,并且用户在纵向模式下向前推(远离自己,或与手机一起移动)。