XNA 技术资源 - 如何在XNA Game Studio 3.1中播放视频
本文由Johnson.Song@live.cn于七楼顶上http://www.qilouding.cn原创发布,请勿转载,如需转载,请与本人联系。
本文此部分内容来自XNA Game Studio 3.1的官方英文帮助文档How To: Play Video,及其相关章节。
VideoPlayer
提供相关方法和属性去播放、暂停、重播、和停止播放视频,及重复播放、音量控制、播放位置信息。
命名空间: Microsoft.Xna.Framework.Media
程 序 集: Microsoft.Xna.Framework (in microsoft.xna.framework.dll)
语法
public sealed class VideoPlayer : IDisposable
如何播放视频
说明如何使用VideoPlayer去播放视频。
官方实例下载:VideoPlayback_Sample.zip
视频播放
播放一个视频
添加一个视频内容文件到游戏项目,使用方法步骤详见How To:Load Content(如何加载资源内容)
1.在LoadContent(内容加载过程),使用ContentManager (内容管理器)加载视频内容。
2.创建一个VideoPlayer的新实例。
Video video;
VideoPlayer player;
Texture2D videoTexture;
protected override void LoadContent()
{
// Create a new SpriteBatch, which can be used to draw textures.
spriteBatch = new SpriteBatch(GraphicsDevice);
video = Content.Load<Video>("video");
player = new VideoPlayer();
}
3.在Update(更新)方法中,播放视频。设置IsLooped(布尔值,获取一个值来表示用户播放的视频是否允许循环播放。true表示允许用户循环播放该视频,flase表示禁止)为true,如果你需要该视频重复播放。
protected override void Update(GameTime gameTime)
{
...
if (player.State == MediaState.Stopped)
{
player.IsLooped = true;
player.Play(video);
}
...
base.Update(gameTime);
}
4.在Draw(绘制方法),如果VideoPlayer没有Stopped(停止播放),调用GetTexture(取回一个当前播放视频的帧内容里所包含的Texture2D)去获取一个播放视频最后帧的复制。
5.创建一个Rectangle(矩形),定义在屏幕上视频内容显示播放的位置。
6.如果texture(纹理)不为null(空),在屏幕上使用SpriteBatch.Draw进行绘制。
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
// Only call GetTexture if a video is playing or paused
if (player.State != MediaState.Stopped)
videoTexture = player.GetTexture();
// Drawing to the rectangle will stretch the
// video to fill the screen
Rectangle screen = new Rectangle(GraphicsDevice.Viewport.X,
GraphicsDevice.Viewport.Y,
GraphicsDevice.Viewport.Width,
GraphicsDevice.Viewport.Height);
// Draw the video, if we have a texture to draw.
if (videoTexture != null)
{
spriteBatch.Begin();
spriteBatch.Draw(videoTexture, screen, Color.White);
spriteBatch.End();
}
base.Draw(gameTime);
}
注:官方帮助文件里还提供了一份如何在三维空间里播放视频的例程How To: Play a Video in 3D space,在VideoPlayer的使用方面没有变化,只是多了Quad的操作,那是另外的内容了,而且在三维空间里播放视频,办法也应该很多,我就不译了。关于在三维物体及空间里播放视频,有兴趣的话也可以看看下面Catalin Zima的例子。
本文此部分内容来自Catalin Zima的博客
译文如下:
XNA Game Studio 3.1 视频播放实例
这是一个关于如何在XNA Game Studio 3.1中播放视频文件的实例。
你需要做的就是添加一个视频文件(wmv格式)到你的项目的Content(目录),并添加少量的代码。
这个实例加载一个包含视频内容的XNA游戏,演示一些效果。加载后,你能看到它的四个演示效果(使用键盘空格,或者游戏柄的A键操作)
视频简单播放效果
视频全屏播放效果
视频内容使用一个后处理的着色器效果(相关代码来自Dark Codex’s教学)
视频内容在一个旋转的球形对象上的效果
实例运行后的屏幕截图:
另:如果你的视频文件不能正确播放,请尝试在Windows Movie Maker重新编码该文件。
(译文完)
评注随笔:
XNA Game Studio 3.1的VideoPlayer是本次更新里最有价值的,虽说我到现在也不明白为什么微软要到XNA3.1才提供这个,有点无奈。它使用起来很简单,如果你只是在游戏里放个开场、Logo什么的。如果你经常编写一些多媒体演示,那我建议你仔细看看Catalin Zima的例子。
祝,阅读愉快,好心情!
作者:Johnson.Song@live.cn
日期:2009.6.13
网站:七楼顶上 http://www.qilouding.cn
声明:本文系原创文章,请勿转载,如需转载,请与本人联系。如有错漏遗失,或不同意见,请留言指正说明。
相关内容
评论
发表新留言
按照内容分类或文档日期查找选择


