XNA游戏:软键盘弹窗输入

在XNA中如果我们需要输入文字,那么我们就需要使用到软键盘了,在XNA中使用软键盘要用到Guide.BeginShowKeyboardInput方法,由于游戏的Update是会不断地执行的,所以要由Guide.IsVisible来检查弹出输入框是否已经显示出来了。

Guide.BeginShowKeyboardInput方法的参数
PlayerIndex 玩家的编号,手机是PlayerIndex.One
Title 输入窗口的标题
Description 输入窗口的描述
DefaultText 默认的文字
Callback 回调的方法
State 使用者想要传送的物件

Guide.BeginShowMessageBox时弹出一个窗口没有软键盘输入,这个方法的参数分�e是
Title 窗口的标题
Text 窗口的文字
Buttons 按钮
FoucsButton 预设的按钮
Icon 图标
Callback 回调的方法
State 使用者想要传送的物件

 

示例

 

  
  
  
  
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using Microsoft.Xna.Framework;  
  5. using Microsoft.Xna.Framework.Audio;  
  6. using Microsoft.Xna.Framework.Content;  
  7. using Microsoft.Xna.Framework.GamerServices;  
  8. using Microsoft.Xna.Framework.Graphics;  
  9. using Microsoft.Xna.Framework.Input;  
  10. using Microsoft.Xna.Framework.Input.Touch;  
  11. using Microsoft.Xna.Framework.Media;  
  12.  
  13. namespace SIPSample  
  14. {  
  15.     /// <summary> 
  16.     /// This is the main type for your game  
  17.     /// </summary> 
  18.     public class Game1 : Microsoft.Xna.Framework.Game  
  19.     {  
  20.         GraphicsDeviceManager graphics;  
  21.         SpriteBatch spriteBatch;  
  22.  
  23.         SpriteFont spriteFont;  
  24.  
  25.         string sipTitle = "This is the title.";  
  26.         string sipDescription = "This is the description that goes beneath the title.";  
  27.         string sipResult = "You type stuff here.";  
  28.  
  29.         public Game1()  
  30.         {  
  31.             graphics = new GraphicsDeviceManager(this);  
  32.             Content.RootDirectory = "Content";  
  33.             TargetElapsedTime = TimeSpan.FromTicks(333333);  
  34.         }  
  35.  
  36.         protected override void Initialize()  
  37.         {  
  38.             base.Initialize();  
  39.         }  
  40.  
  41.         protected override void LoadContent()  
  42.         {  
  43.             spriteBatch = new SpriteBatch(GraphicsDevice);  
  44.             spriteFont = Content.Load<SpriteFont>("SpriteFont1");  
  45.         }  
  46.  
  47.         protected override void UnloadContent()  
  48.         {  
  49.         }  
  50.         /// <summary> 
  51.         /// 输入完成回调方法  
  52.         /// </summary> 
  53.         /// <param name="result"></param> 
  54.         void keyboardCallback(IAsyncResult result)  
  55.         {  
  56.             string retval = Guide.EndShowKeyboardInput(result);  
  57.  
  58.             if (retval != null)  
  59.             {  
  60.                 sipResult = retval;  
  61.             }  
  62.         }  
  63.  
  64.         protected override void Update(GameTime gameTime)  
  65.         {  
  66.             if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)  
  67.                 this.Exit();  
  68.             // Display the SIP  
  69.             TouchCollection touchCollection = TouchPanel.GetState();  
  70.  
  71.             foreach (TouchLocation touch in touchCollection)  
  72.             {  
  73.                 if (touch.State == TouchLocationState.Pressed)  
  74.                     if (!Guide.IsVisible)  
  75.                         //弹出软键盘输入框  
  76.                         Guide.BeginShowKeyboardInput(PlayerIndex.One, sipTitle, sipDescription,  
  77.                             sipResult, keyboardCallback, new object());  
  78.             }  
  79.  
  80.             base.Update(gameTime);  
  81.         }  
  82.  
  83.         protected override void Draw(GameTime gameTime)  
  84.         {  
  85.             GraphicsDevice.Clear(Color.CornflowerBlue);  
  86.  
  87.             //绘制界面的文字  
  88.             spriteBatch.Begin();  
  89.             spriteBatch.DrawString(spriteFont, sipResult, new Vector2 { X = 50Y = 200 }, Color.Black);  
  90.             spriteBatch.End();  
  91.  
  92.             base.Draw(gameTime);  
  93.         }  
  94.     }  

 

 

 

 

你可能感兴趣的:(软键盘,XNA游戏,弹窗输入)