Я делаю свою первую игру для Windows Phone (XNA). Я использую акселерометр, чтобы изменить положение перекрестия на экране:Windows Phone 8 События акселерометра
Вот код в моем Initialize() функции (обратите внимание, что акселерометр локальная переменная объявлена только в этой функции):
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, а также на моем Nokia Lumia 520, подключенном к компьютеру и запущенном из Visual Studio, однако, когда я запускаю игру в телефоне (не подключен к компьютеру), событие accelometer_CurrentValueChanged вызывается только один раз, по заявлению запускать.
Мое решение было сделать акселерометр член моего класса Game, то код в Initialize(), как это:
accelerometer = new Accelerometer();
accelerometer.CurrentValueChanged += accelerometer_CurrentValueChanged;
accelerometer.Start();
Так что мой вопрос, почему делает эту работу решение? И почему существует разница между приложением, запущенным с VS и обычно, даже на том же устройстве?
Я полностью удовлетворен этим ответом. благодаря – Przemen