2011-09-19 19 views
0

经过一两次google后,我想出了这段代码来保存用户所在的当前位置(这样我就可以校准它)并将其保存到NSUserDefaults中。这是我的设置视图:UIAccelerometer帮助?

//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; 

谢谢!

对于那个加速度计代码,我还应该使用if-elseif吗?这会更有效率,还是应该把它留在if-if?

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。我应该如何将它应用于我的代码?我清理了一下代码,使其更清晰一些。

回答

1

不知道你到底想如何使用你存储的数据,但访问它只是:

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; 
} 
+0

我想读取这些值并将它们应用到UIAccelerometer,以便说用户正在玩他们的一边,游戏的加速度计将像用户正常地持有它一样工作。 –

+0

在该代码中,您没有使用accelY。我应该如何将它应用于我的代码?在我原来的帖子中查看我的Edit1,我清理了一下代码,使它更清晰一些。 –

+0

仍然需要有关加速问题的帮助! –