经过一两个谷歌之后,我想出了这个代码来保存用户当前的位置(这样我就可以校准它)并将它保存到NSUserDefaults。这在“我的设置”视图中:
//Add code for calibrating accelerometer
UIAcceleration *acceleration;
float accelX = (acceleration.x - [[NSUserDefaults standardUserDefaults] floatForKey:@"X-Calibrate"]);
float accelY = (acceleration.y - [[NSUserDefaults standardUserDefaults] floatForKey:@"Y-Calibrate"]);
[[NSUserDefaults standardUserDefaults] setFloat:accelX forKey:@"X-Calibrate"];
[[NSUserDefaults standardUserDefaults] setFloat:accelY forKey:@"Y-Calibrate"];要重置校准,我会:
[[NSUserDefaults standardUserDefaults] setFloat:0 forKey:@"X-Calibrate"];
[[NSUserDefaults standardUserDefaults] setFloat:0 forKey:@"Y-Calibrate"];现在我需要一点帮助。现在我在NSUserDefaults中有了这些值。如何将其应用于以下代码,以便“完全”实现校准?以下是当前加速度计的代码:
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceration {
AccelPoint.x += (acceration.x*50);
if (AccelPoint.x < 0) {
AccelPoint.x = 320;
}
if (AccelPoint.x > 320) {
AccelPoint.x = 0;
}
playerSpeed += 0.066;
AccelPoint.y += playerSpeed;
Square.center = AccelPoint;
}这是一些变量以及它们的定义方式:
CGPoint AccelPoint;
float playerSpeed;谢谢!
还有一个快速的小问题,加速度计代码,我应该使用如果-否则?这是更有效的,还是我应该留在如果-如果?
Edit1:
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceration {
float accelX = (acceration.x - [[NSUserDefaults standardUserDefaults] floatForKey:@"X-Calibrate"]);
float accelY = (acceration.y - [[NSUserDefaults standardUserDefaults] floatForKey:@"Y-Calibrate"]);
AccelPoint.x += (accelX*50);
if (AccelPoint.x < 0) {
AccelPoint.x = 320;
}
if (AccelPoint.x > 320) {
AccelPoint.x = 0;
}
playerSpeed += 0.066;
AccelPoint.y += playerSpeed;
Square.center = AccelPoint;
}在我的代码中,我没有使用accelY。我应该如何将它应用到我的代码中?我对代码进行了一些清理,以使其更清晰一些。
发布于 2011-09-19 02:43:48
不确定您希望如何使用所存储的数据,但要访问它,只需:
float xCal = [[NSUserDefaults standardUserDefaults] floatForKey:@"X-Calibrate"];
float yCal = [[NSUserDefaults standardUserDefaults] floatForKey:@"Y-Calibrate"];编辑:
因此,根据你的评论,也许可以试试这样的东西。
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *) acceration {
float accelX = (acceration.x - xCal);
float accelY = (acceration.y - yCal);
AccelPoint.x += (accelX*50);
if (AccelPoint.x < 0) {
AccelPoint.x = 320;
}
if (AccelPoint.x > 320) {
AccelPoint.x = 0;
}
playerSpeed += 0.066;
AccelPoint.y += playerSpeed;
Square.center = AccelPoint;
}https://stackoverflow.com/questions/7465409
复制相似问题