2011-09-19 21 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

仍然需要有關加速問題的幫助! –