Introduzione
In questo articolo, vedremo come applicare nei nostri video giochi, creati in XNA, un video.
Può capitare, nella realizzazione di un video gioco, che prima di iniziare il gioco, di visualizzare al giocatore un video, una presentazione o altro.
Per utilizzare i video in XNA, ci sono delle classi apposite che gestiscono tali file, ed in particolare, i video di tipo WMV.
Creazione del gioco
Dopo aver creato un nuovo progetto di tipo XNA, aggiungente nella sezione “content”, un file video, (in esplora soluzione, tasto destro sul “content”, “aggiungi” e successivamente la voce “elemento esistente”) il tutto come riportato in figura 1.
Figura 1
Passiamo in visualizzazione codice, in dichiarazione di classe, del nostro gioco, si creano oggetti a livello di classe, in questo modo possiamo gestirle in tutte le fasi del gioco.
Nella dichiarazione di livello di classe, si creano tre oggetti, uno di tipo “Video”, che avrà il compito di gestire il file video, caricato nelle risorse, una classe di tipo “VideoPlay” che verifica ed imposta l’esecuzione del video, ed una classe di tipo texture2D, per visualizzare il nostro filmato.
Qui di seguito si riporta l’esempio di codice delle suddette operazioni.
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
//classi per la gestione del video
Video video;
VideoPlayer videoPlayer;
Texture2D videoTexture;
Nell’evento loadcontent, scriviamo il codice per inizializzare gli oggetti, o meglio impostare il filmato e l’oggetto video player.
Riportiamo il codice completo dell’evento LoadContent.
protected override void LoadContent()
{
// Create a new SpriteBatch, which can be used to draw textures.
spriteBatch = new SpriteBatch(GraphicsDevice);
//inizializzo gli oggetti
video = Content.Load<Video>("video");
videoPlayer = new VideoPlayer();
// TODO: use this.Content to load your game content here
}
Nell’evento Update verifichiamo che l’utente ha digitato il tasto “S” in tal caso verifichiamo che il video è fermato, per avviarlo.
La classe video Player, espone diverse proprietà, come lo stato, se farlo eseguirlo in maniera ciclica, senza volume, ed altro ancora.
Mentre il metodo play, che accetta come parametro, un oggetto di tipo video, esegue il video.
Qui di seguito si riporta un esempio di codice, delle suddette operazioni.
protected override void Update(GameTime gameTime)
{
// Allows the game to exit
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
this.Exit();
//nel caso che digitato il pulsante A avvio o fermo il video
if (Keyboard.GetState().IsKeyDown(Keys.S))
{
if (videoPlayer.State == MediaState.Stopped)
{
videoPlayer.IsLooped = true;
videoPlayer.Play(video);
}
else
{
videoPlayer.Stop();
}
}
// TODO: Add your update logic here
base.Update(gameTime);
}
Ora dobbiamo scrivere il codice per visualizzare all’utente il nostro video, il tutto lo possiamo fare tranquillamente tramite l’utilizzo della classe “Texture2D”, che tramite il metodo GetTexture, ottiene il video.
Qui di seguito, si riporta il codice completo dell’evento Draw.
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
//visualizzo il filmat
if (videoPlayer.State != MediaState.Stopped)
{
videoTexture = videoPlayer.GetTexture();
}
Rectangle schermo = new Rectangle(GraphicsDevice.Viewport.X, GraphicsDevice.Viewport.Y, GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height);
//verifico che ho le informazioni per visualizzarli usllo schermo
if (videoTexture != null)
{
spriteBatch.Begin();
spriteBatch.Draw(videoTexture, schermo, Color.Azure);
spriteBatch.End();
}
// TODO: Add your drawing code here
base.Draw(gameTime);
}
Ora non ci resta che testare il nostro progetto, tramite il pulsante “F5” e succesivamente all'avvio del gioco, digitate il tasto “S” per avviare il video.
Conclusioni
L'articolo ha voluto fornire le nozioni di base, dell’utilizzo dei video nei nostri giochi, l’uso di questi file è notevolmente semplice, visto le numerose classi che dispone il Framework XNA, per la gestione dei video e non solo.