已经做了大量的准备工作了,让我们开始游戏吧。
一个疑问,在Page.xaml中并没有设置大小,那么会在哪里设置场景大小呢?
首先来到游戏开始的地方,没错,一切都是从这里开始的—— App.xaml.cs。
public App()
{
...
this.Startup += this.Application_Startup;
...
}
注意!这个事件函数的参数要符合(object,StartupEventArgs)。
在这个函数里有一个局部变量 List<string> parameters = new List<string>();这是一个重要的参数,将来这个参数还会赋给Page的构造函数Page(List<string> parameters)。然后设置了一个while(true),这实际上是一个在正常情况下永远不跳出的循环。在循环体里调用IDictionary<string,string> StartupEventArgs.InitParams[string](获取传递的初始化参数)赋给一个局部变量parameter(string)值。如果这个值正常,就把它添加到List<string> parameters里面,不调用break,索引递增,然后继续添加。如果已经添加完毕,则调用了break,跳出循环,进行下面的语句。在这一段落里还是使用了一些技巧的,比如把它们放进了一个try{}里面,这样当不存在于字典里的时候,也会跳出,实现了我们的目的。
while(true)
{
try
{
parameter = e.InitParams["param" + index];
if ((parameter != null) && (parameter.Length > 0))
parameters.Add(parameter);
else
fail = true;
}
catch (Exception) { fail = true; }
if (fail)
break;
else
index++;
};
其实我们现在很有必要学习一下 StartupEventArgs.InitParams属性,对于我来说是一个陌生的知识点。
public IDictionary<string,string> InitParams{get;},但为了保持连续性,放在其他文章里进一步学习更好。
言归正传,这个事件处理函数里接下来的事情就比较简单了,传递参数,构建Page。
this.RootVisual = new Page(parameters).