windows phone xna 游戏页面跳转及中文显示
2011-01-11 20:17 Aga.J 阅读(811) 评论(0) 编辑 收藏 举报注意:本页面跳转程序是参考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等函数时进行调用。
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即可使用带中文的字体。
最后大功告成:
点击后来到新页面
作者:Aga.J
出处:http://www.cnblogs.com/aga-j
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
个人学习笔记仅供本人记录知识所用,不属发表性文章。