xna 游戏页面跳转及中文显示

来源:互联网 发布:淘宝开店考试内容 编辑:程序博客网 时间:2024/05/15 06:23

注意:本页面跳转程序是参考windows phone xna的源码UISample后总结的!

  ScreenManager是一个DrawableGameComponent类,在Game类(即XNA for windows phone程序的默认Game类)中添加这样的component可以让这个组件自己和Game协调一致的进行update和draw。然后再通过统一的LoadScreen来作为跳转到其他screen的中间screen,主要是新定义了GameScreen类,然后使用从这个类派生出多个不同类别的Screen类,包括LoadScreen,其中GameScreen基类最主要的是draw等虚函数,这些函数都在具体的子类中实现,并最终由ScreenManager类在完成draw等函数时进行调用。

  

image
public Game1()

{

graphics = new GraphicsDeviceManager(this);

Content.RootDirectory = "Content";

// Frame rate is 30 fps by default for Windows Phone.

TargetElapsedTime = TimeSpan.FromTicks(333333);

screenManager = new ScreenManager(this);

Components.Add(screenManager);

if (!screenManager.DeserializeState())

{

LoadingScreen.Load(

screenManager,

true,

PlayerIndex.One,

new BackgroundScreen("Hills"), new MainMenuScreen()

);

}

}

 

  这里每个GameScreen类都可以响应用户输入,调用GameScreen对象的HandleInput实现输入响应,例如在MenuScreen类中我们可以添加MenuEntry对象,当MenuScreen在进行HandleInput时就可以判断用户点击部分是否与MenuEntry对象有交集,如果有则证明点击到某个MenuEntry,那么就激发点击事件,通过委托,由特定函数完成点击事件的响应,在本例中仅进行页面的跳转。

public MainMenuScreen()

base("Main Menu")

{

// Create our menu entries.

// MenuEntry newGameScreen = new MenuEntry("test screen");

MenuEntry newGameScreen = new MenuEntry("中文");

newGameScreen.Selected += NewGamePressed;

MenuEntries.Add(newGameScreen);

}

private void NewGamePressed(object sender, PlayerIndexEventArgs e)

{

LoadingScreen.Load(

ScreenManager,

true,

e.PlayerIndex,

new BackgroundScreen("House"));

}

  这里还有个问题,为了在XNA上显示中文,我们还要再自己建个spritFont,具体的方法可以参考马宁老师的文章---

  马宁的Windows Phone 7开发教程(4)——XNA显示中文字体

  主要过程是这样的(大家还是详细看那篇文章,说得很具体很好):

  1 在project内新建一个Text File,命名为messages.txt 这个txt文件就是保存了我们将要使用的中文字体

  2 在solution内新建一个content pipeline extension library,命名为fontProcessor,添加必要代码后,进行编译

  3 编译完成后在将要引用这个fontProcessor的项目中的Content部分,添加引用,然后再在这个content部分右击Project Dependencies,将FontProcessor前的CheckBox选中。

  4 最后新建一个Sprite Font字体,修改content processor为我们刚才所添加的fontprocessor即可使用带中文的字体。

  

clip_image004
clip_image006

 

  最后大功告成:

  

clip_image008

 

  点击后来到新页面

  

clip_image010

本文来自Aga.J的博客,原文地址:http://www.cnblogs.com/aga-j/archive/2011/01/11/1933208.html

0 0