Domanda

, ma alla ricerca di un risposta che lavorare nel contesto di un gioco di XNA.

Come è possibile determinare se il dispositivo è in un orientamento orizzontale o verticale? La risposta data in questione generale si basa su funzionalità incorporata in PhoneApplicationPage. Per quanto ne so, si sarebbe normalmente non utilizzare quella classe nel contesto di un gioco XNA su Windows Phone 7.

È stato utile?

Soluzione

Da Nick Gravelyn: http: // forum. xna.com/forums/p/49684/298915.aspx#298915 Accelerometro non è in XNA Framework più. È possibile accedervi attraverso questi passaggi:

  1. Aggiungere un riferimento alla Microsoft.Devices.Sensors.dll
  2. Aggiungi 'utilizzando Microsoft.Devices.Sensors;' il vostro stato usando dichiarazioni.
  3. Collegare un evento e cominciare a leggere l'accelerometro:

Prova questo:

try  
{  
    AccelerometerSensor.Default.ReadingChanged += Default_ReadingChanged;  
    AccelerometerSensor.Default.Start();  
}  
catch (AccelerometerStartFailedException)  
{  
}
  1. Aggiungi il gestore di eventi in sé:

In questo modo:

void Default_ReadingChanged(object sender, AccelerometerReadingAsyncEventArgs e)  
{  
}

E tu sei a posto. Tenete a mente, però, che l'accelerometro non funziona con l'emulatore in modo non c'è modo di testare realmente questo senza un dispositivo. Avete bisogno che try / catch perché Inizio un'eccezione nell'emulatore perché non supporta accelerometro.

Altri suggerimenti

Questa è cambiato sembra. Al fine di agganciare nella 'lettura cambiato' si deve creare un accelerometro, e poi avviarlo. Il codice richiesto può essere trovato alla MSDN. Recupero accelerometro ingresso (Windows Phone)

è simile a questa:

#if WINDOWS_PHONE
    Accelerometer accelerometer;
    try
    {
        accelerometer = new Accelerometer();
        accelerometer.ReadingChanged += new EventHandler<AccelerometerReadingEventArgs>(a_ReadingChanged);
        accelerometer.Start();
    }
    catch (AccelerometerFailedException e)
    {
    }
    ...
}

void a_ReadingChanged(object sender, AccelerometerReadingEventArgs e)
{
    //this function is not supported by the window 7 phone emulator
    throw new NotImplementedException();
}
#endif

Ecco un post dal blog di Shawn Hargreaves'

http://blogs.msdn.com/b/shawnhar/archive/2010/07/12/orientation-and-rotation-on-windows-phone.aspx?utm_source=twitterfeed&utm_medium=twitter

Se si vuole passare automaticamente da entrambi gli orientamenti orizzontale e verticale, come si ruota il telefono:

graphics.SupportedOrientations = DisplayOrientation.Portrait | 
                                 DisplayOrientation.LandscapeLeft | 
                                 DisplayOrientation.LandscapeRight;

Passaggio da LandscapeLeft e LandscapeRight può essere gestito automaticamente senza alcun aiuto speciale dal gioco, ed è quindi attivato per impostazione predefinita. Ma il passaggio tra paesaggio e ritratto altera le dimensioni backbuffer (vs. corta e ampia alto-e-sottile), che molto probabilmente richiederà di modificare il layout dello schermo. Non tutti i giochi saranno in grado di gestire questo (e alcuni disegni senso solo in un modo up), la commutazione in modo dinamico tra paesaggio e ritratto è abilitato solo per i giochi che esplicitamente optano-in impostando SupportedOrientations.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top