- Un semplice player video in XNA -
|
|||
COSA SERVE PER QUESTO TUTORIAL | |||
Download | Chiedi sul FORUM | Glossario | cognizioni basiche di C# e sul framework XNA | ||
Come gestire la riproduzione di un video in XNA | |||
DISEGNARE UN VIDEO Come servirsi del namespace Microsoft.Xna.Framework.Media per riprodurre video.
In questo tutorial vedremo come realizzare un semplice player video con
XNA, dotato di tasti Play/Resume e Stop. Principalmente ci serviremo
delle classi VideoPlayer e Video all'interno di
Microsoft.Xna.Framework.Media. In sostanza si tratta di caricare un
video in formato WMV in un oggetto Video, avviare la riproduzione con
VideoPlayer e nella funzione Draw utilizzare il metodo
VideoPlayer.GetTexture per ottenere il frame corrente. Tutto il resto è
solo un po' di logica per gestire i pulsanti (per la quale è disponibile
una classe da ampliare e riutilizzabile). // Il riproduttore di video Microsoft.Xna.Framework.Media.VideoPlayer player = new Microsoft.Xna.Framework.Media.VideoPlayer(); // Il video da riprodurre Video testVideo; In LoadContent carichiamo il video dal ContentManager e inizializziamo il rettangolo dove l'output grafico verrà disegnato su una porzione dello schermo: protected override void LoadContent() { // ... // Inizializziamo l'area di disegno su tutto le schermo eccetto i tre pulsanti videoRectangle = new Rectangle(0, 0, this.GraphicsDevice.Viewport.Width, this.GraphicsDevice.Viewport.Height - 60); // Creiamo lo SpriteBatch e carichiamo il video spriteBatch = new SpriteBatch(GraphicsDevice); testVideo = this.Content.Load<Video>("video"); } Per rendere il player un po' più interattivo facciamo in modo che quando si fa click destro nell'area di gioco la dimensione dell'area in cui viene disegnato il video cambia conseguentemente: protected override void Update(GameTime gameTime) { // ... // La pressione del tasto destro del mouse ridimensiona // l'area di disegno MouseState mouseState = Mouse.GetState(); if (mouseState.RightButton == ButtonState.Pressed) videoRectangle = new Rectangle(videoRectangle.X, videoRectangle.Y, mouseState.X, mouseState.Y); // ... } Quindi, nel metodo Draw disegniamo il video nel rettangolo stabilito: protected override void Draw(GameTime gameTime) { // ... // Se il video non è in stop if (player.State != MediaState.Stopped) { spriteBatch.Begin(); // Disegnamo il frame corrente spriteBatch.Draw(player.GetTexture(), videoRectangle, Color.White); spriteBatch.End(); } // ... }
Semplicemente se il video è in pausa o in esecuzione chiamiamo il metodo
SpriteBatch.Draw passandogli come parametro il
risultato di VideoPlayer.GetTexture che restituisce il
frame corrente in forma di Texture2D.
|
|||
<< INDIETRO | by VeNoM00 |