惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Docker
大猫的无限游戏
大猫的无限游戏
Jina AI
Jina AI
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 司徒正美
美团技术团队
雷峰网
雷峰网
阮一峰的网络日志
阮一峰的网络日志
WordPress大学
WordPress大学
T
Tailwind CSS Blog
U
Unit 42
C
Check Point Blog
S
SegmentFault 最新的问题
Martin Fowler
Martin Fowler
Stack Overflow Blog
Stack Overflow Blog
云风的 BLOG
云风的 BLOG
L
LangChain Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
腾讯CDC
罗磊的独立博客
小众软件
小众软件
Recent Announcements
Recent Announcements
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
D
DataBreaches.Net

博客园 - tiny羊

自制一个可以为XNA所用的GIF 转 PNG 的小工具 展示PNG动画精灵 C#关键字 之 访问与上下文 C#关键字 之 转换 C#关键字 之 运算符 C#关键字 之 参数 - tiny羊 C#关键字 之 块 C#关键字 之 修饰符 Sql小题几道 泛型类及系统中常用的泛型类 泛型函数 Javascript简明教程6 定义时执行与单例模式 编程语言发展趋势图 Javascript简明教程系列 Javascript简明教程五 DOM Javascript简明教程四 作用域 Javascript简明教程三 函数 Javascript简明教程二 变量 Javascript简明教程一 使用Javascript
XNA 4.0中实现简单的快捷键模板
tiny羊 · 2011-12-27 · via 博客园 - tiny羊

在XNA中,可以通过GraphicsDeviceManager提供的ToggleFullScreen来进行全屏状态转换

通常的游戏中,都会使用Alt+Enter来进行全屏状态切换,所以我们可以在Update中使用如下代码进行全屏切换

   1: protected override void Update(GameTime gameTime)
   2:  
   3: {
   4:  
   5: if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
   6:  
   7: this.Exit();
   8:  
   9: if (Keyboard.GetState()[Keys.RightAlt] == KeyState.Down &&
  10:  
  11: Keyboard.GetState()[Keys.Enter] == KeyState.Down)
  12:  
  13: {
  14:  
  15: graphics.ToggleFullScreen();
  16:  
  17: }
  18:  
  19: base.Update(gameTime);
  20:  
  21: }
  22:  

在里我们使用Keyboard.GetState来获取按键状态

当然我们可以封装起方法来进行操作

   1: protected override void Update(GameTime gameTime)
   2:  
   3: {
   4:  
   5: if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
   6:  
   7: this.Exit();
   8:  
   9: KeyboardTemplate(() => graphics.ToggleFullScreen(), Keys.Enter, Keys.RightAlt);
  10:  
  11: base.Update(gameTime);
  12:  
  13: }
  14:  
  15: void KeyboardTemplate(Action action, params Keys[] keys)
  16:  
  17: {
  18:  
  19: if (keys.Any(key => Keyboard.GetState()[key] != KeyState.Down))
  20:  
  21: {
  22:  
  23: return;
  24:  
  25: }
  26:  
  27: action();
  28:  
  29: }
  30:  

当然我们也可以添加其它一些功能

   1: protected override void Update(GameTime gameTime)
   2:  
   3: {
   4:  
   5: if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
   6:  
   7: this.Exit();
   8:  
   9: KeyboardTemplate(graphics.ToggleFullScreen, Keys.Enter, Keys.RightAlt);
  10:  
  11: KeyboardTemplate(this.Exit, Keys.F4, Keys.LeftControl);
  12:  
  13: base.Update(gameTime);
  14:  
  15: }

这样就可以在Ctrl+F4的时候关闭当前游戏了