Sto realizzando il mio primo gioco per Windows Phone (XNA). Io uso accelerometro per cambiare la posizione di un mirino sullo schermo:Windows Phone 8 Accelerometro eventi
Ecco il codice nel mio Initialize() funzione (si noti che accelerometro è variabile locale dichiarata solo in questa funzione):
Accelerometer accelerometer = new Accelerometer();
accelerometer.CurrentValueChanged += accelerometer_CurrentValueChanged;
accelerometer.Start();
E il gestore di eventi:
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);
}
}
Questo funziona bene su Windows Phone Emulator e sul mio Nokia Lumia 520 collegato al computer e avvio da Visual Studio, tuttavia quando lancio il gioco nel telefono (non connesso al computer), l'evento accelerometer_CurrentValueChanged sembra essere chiamato una sola volta, su richiesta avviare.
La mia soluzione era di fare l'accelerometro un membro della mia classe di gioco, poi il codice a Initialize() in questo modo:
accelerometer = new Accelerometer();
accelerometer.CurrentValueChanged += accelerometer_CurrentValueChanged;
accelerometer.Start();
Quindi la mia domanda è, perché fa questo lavoro soluzione? E perché c'è una differenza tra l'applicazione lanciata da VS e normalmente, anche sullo stesso dispositivo?
Sono pienamente soddisfatto di questa risposta. Grazie – Przemen