我正在爲Windows Phone(XNA)開發我的第一款遊戲。我使用加速度計來改變十字的屏幕上的位置:Windows Phone 8加速度計事件
這裏是我的初始化()函數的代碼(注意,加速度計只是在這個函數聲明的局部變量):
Accelerometer accelerometer = new Accelerometer();
accelerometer.CurrentValueChanged += accelerometer_CurrentValueChanged;
accelerometer.Start();
和事件處理程序:
void accelerometer_CurrentValueChanged(object sender, SensorReadingEventArgs<AccelerometerReading> e)
{
lock (accelerometerVectorLock)
{
accelerometerVector = new Vector3(
(float)e.SensorReading.Acceleration.X,
(float)e.SensorReading.Acceleration.Y,
(float)e.SensorReading.Acceleration.Z);
}
}
這工作正常在Windows Phone模擬器上,以及連接到計算機並從Visual Studio啓動的我的諾基亞Lumia 520上,但是當我在手機中啓動遊戲時(未連接到計算機),accelerometer_CurrentValueChanged事件似乎只在應用程序上調用一次啓動。
我的解決辦法是讓這樣的加速度計自己的遊戲類的成員,那麼在初始化(代碼):
accelerometer = new Accelerometer();
accelerometer.CurrentValueChanged += accelerometer_CurrentValueChanged;
accelerometer.Start();
所以我的問題是,爲什麼這個解決方案的工作?爲什麼從VS啓動的應用程序和正常啓動的應用程序之間存在差異,即使是在同一個設備上?
我完全滿意這個答案。謝謝 – Przemen