<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_深蓝色右手</title><subtitle type="text">生命在扶摇直上中绽放</subtitle><id>http://feed.cnblogs.com/blog/u/57553/rss</id><updated>2012-05-26T03:47:30Z</updated><author><name>深蓝色右手</name><uri>http://www.cnblogs.com/alamiye010/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/alamiye010/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/57553/rss"/><entry><id>http://www.cnblogs.com/alamiye010/archive/2012/05/23/2515113.html</id><title type="text">Silverlight游戏研发手记：(十)3D 场景与控制设计①</title><summary type="text">模型和骨骼动画仅仅是开启3D游戏的敲门砖，置入基于摄像机的场景设计方能呈现最完美的3D游戏。本节，我们依旧从简单着手，一步步创建基于模型的3D游戏场景。</summary><published>2012-05-23T09:33:00Z</published><updated>2012-05-23T09:33:00Z</updated><author><name>深蓝色右手</name><uri>http://www.cnblogs.com/alamiye010/</uri></author><link rel="alternate" href="http://www.cnblogs.com/alamiye010/archive/2012/05/23/2515113.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/alamiye010/archive/2012/05/23/2515113.html"/><content type="html">&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt;"&gt;模型和骨骼动画仅仅是开启3D游戏的敲门砖，置入基于摄像机的场景设计方能呈现最完美的3D游戏。本节，我们依旧从简单着手，一步步创建基于模型的3D游戏场景。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt;"&gt;《&lt;a href="http://shiba.hpe.sh.cn/jiaoyanzu/WULI/soft/xna.aspx?classId=4" target="_blank"&gt;XNA4.0学习指南(中文)&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;》是一本绝对值得一看的好书，对于3D游戏的基础知识、概念以及简单应用讲解非常全面。比如书中提到关于XNA内置了创建摄像机的方案代码，根据该提示我们便可轻松实现一个名为Camera3D的类：&lt;/span&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;" onclick="cnblogs_code_show('699a243d-2bfc-4fd5-89e8-00fa711b9240')"&gt;&lt;img style="display: none;" id="code_img_opened_699a243d-2bfc-4fd5-89e8-00fa711b9240" class="code_img_opened" onclick="cnblogs_code_hide('699a243d-2bfc-4fd5-89e8-00fa711b9240',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt;&lt;div id="cnblogs_code_open_699a243d-2bfc-4fd5-89e8-00fa711b9240" class="cnblogs_code_hide"&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;摄像机&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;sealed&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;class&lt;/span&gt;&amp;nbsp;Camera3D&amp;nbsp;:&amp;nbsp;Object3D&amp;nbsp;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&amp;nbsp;Matrix&amp;nbsp;View&amp;nbsp;{&amp;nbsp;&lt;span style="color: #0000ff;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt;;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&amp;nbsp;Matrix&amp;nbsp;Projection&amp;nbsp;{&amp;nbsp;&lt;span style="color: #0000ff;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt;;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&amp;nbsp;Vector3&amp;nbsp;Target&amp;nbsp;{&amp;nbsp;&lt;span style="color: #0000ff;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt;;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&amp;nbsp;Vector3&amp;nbsp;Up&amp;nbsp;{&amp;nbsp;&lt;span style="color: #0000ff;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt;;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;float&lt;/span&gt;&amp;nbsp;Near&amp;nbsp;{&amp;nbsp;&lt;span style="color: #0000ff;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt;;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;float&lt;/span&gt;&amp;nbsp;Far&amp;nbsp;{&amp;nbsp;&lt;span style="color: #0000ff;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt;;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&amp;nbsp;Camera3D(ContentManager&amp;nbsp;content,&amp;nbsp;GraphicsDevice&amp;nbsp;device,&amp;nbsp;Vector3&amp;nbsp;position,&amp;nbsp;Vector3&amp;nbsp;target,&amp;nbsp;Vector3&amp;nbsp;up,&amp;nbsp;&lt;span style="color: #0000ff;"&gt;float&lt;/span&gt;&amp;nbsp;near,&amp;nbsp;&lt;span style="color: #0000ff;"&gt;float&lt;/span&gt;&amp;nbsp;far)&amp;nbsp;:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;base&lt;/span&gt;(content,&amp;nbsp;device)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.Position&amp;nbsp;=&amp;nbsp;position;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.Target&amp;nbsp;=&amp;nbsp;target;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.Up&amp;nbsp;=&amp;nbsp;up;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.Near&amp;nbsp;=&amp;nbsp;near;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.Far&amp;nbsp;=&amp;nbsp;far;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;获取或设置视角模式&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&amp;nbsp;ViewModes&amp;nbsp;ViewMode&amp;nbsp;{&amp;nbsp;&lt;span style="color: #0000ff;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt;;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;更新以3D角色为中心的视口&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;param&amp;nbsp;name="role3D"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&amp;nbsp;UpdateViewPort(Role3D&amp;nbsp;role3D)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&amp;nbsp;(role3D&amp;nbsp;!=&amp;nbsp;&lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Vector3&amp;nbsp;p&amp;nbsp;=&amp;nbsp;role3D.Position;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;通过角色眼睛位置及调节其他参数实现远近视角变化&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;switch&lt;/span&gt;&amp;nbsp;(ViewMode)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;case&lt;/span&gt;&amp;nbsp;ViewModes.FirstPerson:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;从(0,eye,0)向(0,eye,-1)方向看,得到以下公式&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Position&amp;nbsp;=&amp;nbsp;p&amp;nbsp;+&amp;nbsp;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&amp;nbsp;Vector3(&lt;span style="color: #800080;"&gt;0&lt;/span&gt;,&amp;nbsp;role3D.Eye,&amp;nbsp;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Target&amp;nbsp;=&amp;nbsp;p&amp;nbsp;+&amp;nbsp;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&amp;nbsp;Vector3(-(&lt;span style="color: #0000ff;"&gt;float&lt;/span&gt;)Math.Sin(RotationY),&amp;nbsp;role3D.Eye,&amp;nbsp;-(&lt;span style="color: #0000ff;"&gt;float&lt;/span&gt;)Math.Cos(RotationY));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;case&lt;/span&gt;&amp;nbsp;ViewModes.ThirdPersonHeadlook:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;从(0,eye,l1)向(0,eye-130,l2)看,得到以下公式,l1,l2值可调节远近和视角,Scale伸缩摄像机&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;float&lt;/span&gt;&amp;nbsp;l1&amp;nbsp;=&amp;nbsp;&lt;span style="color: #800080;"&gt;30&lt;/span&gt;&amp;nbsp;*&amp;nbsp;Scale;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;float&lt;/span&gt;&amp;nbsp;x1&amp;nbsp;=&amp;nbsp;(&lt;span style="color: #0000ff;"&gt;float&lt;/span&gt;)(l1&amp;nbsp;*&amp;nbsp;Math.Sin(RotationY));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;float&lt;/span&gt;&amp;nbsp;z1&amp;nbsp;=&amp;nbsp;(&lt;span style="color: #0000ff;"&gt;float&lt;/span&gt;)(l1&amp;nbsp;*&amp;nbsp;Math.Cos(RotationY));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;float&lt;/span&gt;&amp;nbsp;l2&amp;nbsp;=&amp;nbsp;-&lt;span style="color: #800080;"&gt;410&lt;/span&gt;&amp;nbsp;*&amp;nbsp;Scale;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;float&lt;/span&gt;&amp;nbsp;x2&amp;nbsp;=&amp;nbsp;(&lt;span style="color: #0000ff;"&gt;float&lt;/span&gt;)(l2&amp;nbsp;*&amp;nbsp;Math.Sin(RotationY));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;float&lt;/span&gt;&amp;nbsp;z2&amp;nbsp;=&amp;nbsp;(&lt;span style="color: #0000ff;"&gt;float&lt;/span&gt;)(l2&amp;nbsp;*&amp;nbsp;Math.Cos(RotationY));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Position&amp;nbsp;=&amp;nbsp;p&amp;nbsp;+&amp;nbsp;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&amp;nbsp;Vector3(x1,&amp;nbsp;role3D.Eye,&amp;nbsp;z1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Target&amp;nbsp;=&amp;nbsp;p&amp;nbsp;+&amp;nbsp;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&amp;nbsp;Vector3(x2,&amp;nbsp;role3D.Eye&amp;nbsp;-&amp;nbsp;&lt;span style="color: #800080;"&gt;130&lt;/span&gt;,&amp;nbsp;z2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;case&lt;/span&gt;&amp;nbsp;ViewModes.ThirdPersonOverlook:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;l值可调节远近和视角,Scale伸缩摄像机&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;float&lt;/span&gt;&amp;nbsp;l&amp;nbsp;=&amp;nbsp;(role3D.Eye&amp;nbsp;+&amp;nbsp;&lt;span style="color: #800080;"&gt;80&lt;/span&gt;)&amp;nbsp;*&amp;nbsp;Scale;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;float&lt;/span&gt;&amp;nbsp;x&amp;nbsp;=&amp;nbsp;(&lt;span style="color: #0000ff;"&gt;float&lt;/span&gt;)(l&amp;nbsp;*&amp;nbsp;Math.Sin(RotationY));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;float&lt;/span&gt;&amp;nbsp;z&amp;nbsp;=&amp;nbsp;(&lt;span style="color: #0000ff;"&gt;float&lt;/span&gt;)(l&amp;nbsp;*&amp;nbsp;Math.Cos(RotationY));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Position&amp;nbsp;=&amp;nbsp;p&amp;nbsp;+&amp;nbsp;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&amp;nbsp;Vector3(x,&amp;nbsp;l,&amp;nbsp;z);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Target&amp;nbsp;=&amp;nbsp;p;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;更新摄像机的视图矩阵和投影矩阵&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;override&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&amp;nbsp;Update(GameTimerEventArgs&amp;nbsp;e)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;View&amp;nbsp;=&amp;nbsp;Matrix.CreateLookAt(Position,&amp;nbsp;Target,&amp;nbsp;Up)&amp;nbsp;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Projection&amp;nbsp;=&amp;nbsp;Matrix.CreatePerspectiveFieldOfView(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MathHelper.PiOver4,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;device.Viewport.AspectRatio,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Near,&amp;nbsp;Far);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt;"&gt;摄像机是我们观查3D世界的窗口，很多游戏开发者会亲切的称之为&amp;#8220;上帝之眼&amp;#8221;。毫不夸张的说，有了它，市面上一切3D游戏视觉设定都能随意实现。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt;"&gt;比如&amp;#8220;第一人称视角&amp;#8221;的RPG和FPS，经典代表作有《魔法门》，《反恐精英》等：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="line-height: 28px; font-size: 19px;"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120523/0.jpg" width="566" height="570" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt;"&gt;第一人称视角的最大特点是玩家置入感强，屏幕就好比玩家的眼睛，玩家通过屏幕看去仿佛置身其中，身临其境般感觉，非常真实。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt;"&gt;当然，在此基础上又进化出来了&amp;#8220;第三人称平视&amp;#8221;视角，该视角很好的规避了&amp;#8220;第一人称视角&amp;#8221;中存在的视觉死角以及容易产生眩晕等问题，动作感及玩家操控体验更强，逐渐成为3D游戏，尤其是动作和射击类3D游戏的主流视角。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt;"&gt;经典代表作有ACT《鬼泣》和TPS《全球使命》等：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="line-height: 28px; font-size: 19px;"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120523/1.jpg" width="566" height="570" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt;"&gt;而&amp;#8220;第三人称俯视&amp;#8221;视角则是我们最最常见的游戏视角，该视角非常有利于玩家时刻观察大范围周边环境，视觉面广，立体感强，操作尤为爽快。应该感谢网游，使之能够成为目前绝大多数玩家最钟爱的3D(2.5D)游戏视角模式。经典游戏耳熟能详，举不胜举，比如ARPG《暗黑破坏神》和SLG《英雄无敌》：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="line-height: 28px; font-size: 19px;"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120523/2.jpg" width="566" height="570" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt;"&gt;总体来说，游戏视角的选取应该符合游戏本身的性质以及匹配游戏的核心玩法，像《刺客信条》等神作，为了在不同动作、环境时得到最好的玩家操控体验，采用了极为复杂的动态视角切换技术。当然还有比如《上古卷轴5》和《辐射3》等大作，为了不失去任何玩家，系统可根据玩家自身适应性与操作习惯选择相应的特定视角等等。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt;"&gt;通过对以上案例的分析，目的只想向大家传递一个思想：开发3D游戏若能很好的把握住摄像机的运作原理，对于3D游戏场景设计来说，一切都是小Case。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt;"&gt;接下来，为了让大家更进一步理解3D摄像机，以&lt;a href="http://www.cnblogs.com/alamiye010/archive/2012/05/08/2490241.html" target="_blank"&gt;上一节&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 14pt;"&gt;中的骨骼动画角色作为主角，以3DMAX导出的FBX格式建筑模型模拟游戏实际场景，再根据之前创建的摄像机代码，通过修改其中的Position和Target两个关键参数即可调节出任意3D视角：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt;"&gt;当我们将摄像机置于主角的眼睛位置，并同时看向主角的正前方时，此时便形成了&amp;#8220;第一人称视角&amp;#8221;(通常我们会在屏幕正中心放置一个十字准心，用于方向与目标的定位)：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="line-height: 28px; font-size: 19px;"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120523/3.jpg" width="494" height="519" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;font face="宋体"&gt;&lt;span style="line-height: 28px; font-size: 19px;"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120523/4.jpg" width="707" height="378" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt;"&gt;当摄像机置于主角身边某处(比如正后方)并穿过主角看向前方，同时仅作围绕主角的垂直方向旋转时，便形成了&amp;#8220;第三人称平视&amp;#8221;视角：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="line-height: 28px; font-size: 19px;"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120523/5.jpg" width="566" height="570" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="line-height: 28px; font-size: 19px;"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120523/6.png" width="705" height="377" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt;"&gt;将摄像机固定于主角的上空，并呈一定角度的倾斜对准主角脚底俯视时，便形成了&amp;#8220;第三人称俯视&amp;#8221;视角：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="line-height: 28px; font-size: 19px;"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120523/7.jpg" width="566" height="570" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="line-height: 28px; font-size: 19px;"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120523/8.jpg" width="709" height="373" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt;"&gt;其实很简单对吧，不妨将摄像机看作是我们的游戏屏幕，那么各类视角的实现其实都不过如此。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt;"&gt;最后，为了配合Windows Phone等移动设备独特的操作方式，按照游戏玩家们的传统习惯，即左手控制角色移动，右手控制行为指令；那么我们便可创建出一个名为Controller的&amp;#8220;虚拟拇指摇杆控制器&amp;#8221;类，并分别置于屏幕左右两边：&lt;/span&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;" onclick="cnblogs_code_show('edf8d01f-5af0-4a03-be2d-a8cba7318b09')"&gt;&lt;img style="display: none;" id="code_img_opened_edf8d01f-5af0-4a03-be2d-a8cba7318b09" class="code_img_opened" onclick="cnblogs_code_hide('edf8d01f-5af0-4a03-be2d-a8cba7318b09',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt;&lt;div id="cnblogs_code_open_edf8d01f-5af0-4a03-be2d-a8cba7318b09" class="cnblogs_code_hide"&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;基于虚拟拇指摇杆的控制器&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;sealed&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;class&lt;/span&gt;&amp;nbsp;Controller&amp;nbsp;:&amp;nbsp;Object2D&amp;nbsp;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Texture2D&amp;nbsp;rtexture,&amp;nbsp;ltexture,&amp;nbsp;backStick;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;const&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&amp;nbsp;maxThumbstickDistance&amp;nbsp;=&amp;nbsp;&lt;span style="color: #800080;"&gt;50&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;const&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&amp;nbsp;distanceThumbsticks&amp;nbsp;=&amp;nbsp;&lt;span style="color: #800080;"&gt;50&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Vector2&amp;nbsp;rightCornerPosition,&amp;nbsp;leftCornerPosition;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Vector2&amp;nbsp;rightBackStick,&amp;nbsp;leftBackStick;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Vector2&amp;nbsp;rightPosition,&amp;nbsp;leftPosition;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Vector2&amp;nbsp;rightThumbstickCenter,&amp;nbsp;leftThumbstickCenter;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&amp;nbsp;Controller(ContentManager&amp;nbsp;content,&amp;nbsp;Vector2&amp;nbsp;size)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp;&lt;span style="color: #0000ff;"&gt;base&lt;/span&gt;(content)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;backStick&amp;nbsp;=&amp;nbsp;content.Load&amp;lt;Texture2D&amp;gt;(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Image/BackgroundStick&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rtexture&amp;nbsp;=&amp;nbsp;content.Load&amp;lt;Texture2D&amp;gt;(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Image/RStick&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ltexture&amp;nbsp;=&amp;nbsp;content.Load&amp;lt;Texture2D&amp;gt;(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Image/LStick&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Vector2&amp;nbsp;middleTexture&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&amp;nbsp;Vector2(rtexture.Width&amp;nbsp;/&amp;nbsp;&lt;span style="color: #800080;"&gt;2&lt;/span&gt;,&amp;nbsp;rtexture.Height&amp;nbsp;/&amp;nbsp;&lt;span style="color: #800080;"&gt;2&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rightThumbstickCenter&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&amp;nbsp;Vector2(size.X&amp;nbsp;-&amp;nbsp;distanceThumbsticks&amp;nbsp;-&amp;nbsp;middleTexture.X,&amp;nbsp;size.Y&amp;nbsp;-&amp;nbsp;distanceThumbsticks&amp;nbsp;-&amp;nbsp;middleTexture.Y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;leftThumbstickCenter&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&amp;nbsp;Vector2(distanceThumbsticks&amp;nbsp;+&amp;nbsp;middleTexture.X,&amp;nbsp;size.Y&amp;nbsp;-&amp;nbsp;distanceThumbsticks&amp;nbsp;-&amp;nbsp;middleTexture.Y);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rightCornerPosition&amp;nbsp;=&amp;nbsp;rightThumbstickCenter&amp;nbsp;-&amp;nbsp;middleTexture;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;leftCornerPosition&amp;nbsp;=&amp;nbsp;leftThumbstickCenter&amp;nbsp;-&amp;nbsp;middleTexture;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rightBackStick&amp;nbsp;=&amp;nbsp;rightCornerPosition&amp;nbsp;-&amp;nbsp;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&amp;nbsp;Vector2(distanceThumbsticks,&amp;nbsp;distanceThumbsticks);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;leftBackStick&amp;nbsp;=&amp;nbsp;leftCornerPosition&amp;nbsp;-&amp;nbsp;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&amp;nbsp;Vector2(distanceThumbsticks,&amp;nbsp;distanceThumbsticks);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;获取或设置操作模式(精确度)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&amp;nbsp;ControlModes&amp;nbsp;ControlMode&amp;nbsp;{&amp;nbsp;&lt;span style="color: #0000ff;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt;;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;获取或设置左侧虚拟拇指摇杆位置&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&amp;nbsp;Vector2&amp;nbsp;LeftThumbstick&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;get&lt;/span&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;缩放向量计算触摸位置的中心,缩放最大摇杆距离&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Vector2&amp;nbsp;l&amp;nbsp;=&amp;nbsp;(leftPosition&amp;nbsp;-&amp;nbsp;leftThumbstickCenter)&amp;nbsp;/&amp;nbsp;maxThumbstickDistance;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;如果长度大于1,转化为单位矢量&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&amp;nbsp;(l.LengthSquared()&amp;nbsp;&amp;gt;&amp;nbsp;1f)&amp;nbsp;{&amp;nbsp;l.Normalize();&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&amp;nbsp;l;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;获取或设置右侧虚拟拇指摇杆位置&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&amp;nbsp;Vector2&amp;nbsp;RightThumbstick&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;get&lt;/span&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Vector2&amp;nbsp;l&amp;nbsp;=&amp;nbsp;(rightPosition&amp;nbsp;-&amp;nbsp;rightThumbstickCenter)&amp;nbsp;/&amp;nbsp;maxThumbstickDistance;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&amp;nbsp;(l.LengthSquared()&amp;nbsp;&amp;gt;&amp;nbsp;1f)&amp;nbsp;{&amp;nbsp;l.Normalize();&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&amp;nbsp;l;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;override&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&amp;nbsp;Update(GameTimerEventArgs&amp;nbsp;e)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TouchLocation?&amp;nbsp;leftTouch&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;,&amp;nbsp;rightTouch&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TouchCollection&amp;nbsp;touches&amp;nbsp;=&amp;nbsp;TouchPanel.GetState();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;foreach&lt;/span&gt;&amp;nbsp;(TouchLocation&amp;nbsp;touch&amp;nbsp;&lt;span style="color: #0000ff;"&gt;in&lt;/span&gt;&amp;nbsp;touches)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;switch&lt;/span&gt;&amp;nbsp;(ControlMode)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;case&lt;/span&gt;&amp;nbsp;ControlModes.Accurate:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&amp;nbsp;(Math.Pow((touch.Position.X&amp;nbsp;-&amp;nbsp;leftThumbstickCenter.X),&amp;nbsp;&lt;span style="color: #800080;"&gt;2&lt;/span&gt;)&amp;nbsp;+&amp;nbsp;Math.Pow((touch.Position.Y&amp;nbsp;-&amp;nbsp;leftThumbstickCenter.Y),&amp;nbsp;&lt;span style="color: #800080;"&gt;2&lt;/span&gt;)&amp;nbsp;&amp;lt;=&amp;nbsp;Math.Pow(backStick.Width&amp;nbsp;/&amp;nbsp;&lt;span style="color: #800080;"&gt;2&lt;/span&gt;,&amp;nbsp;&lt;span style="color: #800080;"&gt;2&lt;/span&gt;))&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;leftTouch&amp;nbsp;=&amp;nbsp;touch;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;leftPosition&amp;nbsp;=&amp;nbsp;touch.Position;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;continue&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&amp;nbsp;(Math.Pow((touch.Position.X&amp;nbsp;-&amp;nbsp;rightThumbstickCenter.X),&amp;nbsp;&lt;span style="color: #800080;"&gt;2&lt;/span&gt;)&amp;nbsp;+&amp;nbsp;Math.Pow((touch.Position.Y&amp;nbsp;-&amp;nbsp;rightThumbstickCenter.Y),&amp;nbsp;&lt;span style="color: #800080;"&gt;2&lt;/span&gt;)&amp;nbsp;&amp;lt;=&amp;nbsp;Math.Pow(backStick.Width&amp;nbsp;/&amp;nbsp;&lt;span style="color: #800080;"&gt;2&lt;/span&gt;,&amp;nbsp;&lt;span style="color: #800080;"&gt;2&lt;/span&gt;))&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rightTouch&amp;nbsp;=&amp;nbsp;touch;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rightPosition&amp;nbsp;=&amp;nbsp;touch.Position;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;continue&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;case&lt;/span&gt;&amp;nbsp;ControlModes.Rough:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&amp;nbsp;(touch.Position.X&amp;nbsp;&amp;lt;=&amp;nbsp;TouchPanel.DisplayWidth&amp;nbsp;/&amp;nbsp;&lt;span style="color: #800080;"&gt;2&lt;/span&gt;&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;touch.Position.Y&amp;nbsp;&amp;gt;=&amp;nbsp;TouchPanel.DisplayHeight&amp;nbsp;/&amp;nbsp;&lt;span style="color: #800080;"&gt;3&lt;/span&gt;)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;leftTouch&amp;nbsp;=&amp;nbsp;touch;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;leftPosition&amp;nbsp;=&amp;nbsp;touch.Position;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;continue&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&amp;nbsp;(touch.Position.X&amp;nbsp;&amp;gt;&amp;nbsp;TouchPanel.DisplayWidth&amp;nbsp;/&amp;nbsp;&lt;span style="color: #800080;"&gt;2&lt;/span&gt;&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;touch.Position.Y&amp;nbsp;&amp;gt;=&amp;nbsp;TouchPanel.DisplayHeight&amp;nbsp;/&amp;nbsp;&lt;span style="color: #800080;"&gt;3&lt;/span&gt;)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rightTouch&amp;nbsp;=&amp;nbsp;touch;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rightPosition&amp;nbsp;=&amp;nbsp;touch.Position;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;continue&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&amp;nbsp;(leftTouch.HasValue&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;rightTouch.HasValue)&amp;nbsp;{&amp;nbsp;&lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&amp;nbsp;(!leftTouch.HasValue)&amp;nbsp;{&amp;nbsp;leftPosition&amp;nbsp;=&amp;nbsp;leftThumbstickCenter;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&amp;nbsp;(!rightTouch.HasValue)&amp;nbsp;{&amp;nbsp;rightPosition&amp;nbsp;=&amp;nbsp;rightThumbstickCenter;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;override&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&amp;nbsp;Draw(GameTimerEventArgs&amp;nbsp;e,&amp;nbsp;SpriteBatch&amp;nbsp;spriteBatch)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&amp;nbsp;(RightThumbstick.Length()&amp;nbsp;&amp;gt;&amp;nbsp;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;spriteBatch.Draw(backStick,&amp;nbsp;rightBackStick,&amp;nbsp;Color.White);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;spriteBatch.Draw(rtexture,&amp;nbsp;rightCornerPosition&amp;nbsp;+&amp;nbsp;RightThumbstick&amp;nbsp;*&amp;nbsp;distanceThumbsticks,&amp;nbsp;Color.White);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&amp;nbsp;(LeftThumbstick.Length()&amp;nbsp;&amp;gt;&amp;nbsp;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;spriteBatch.Draw(backStick,&amp;nbsp;leftBackStick,&amp;nbsp;Color.White);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;spriteBatch.Draw(ltexture,&amp;nbsp;leftCornerPosition&amp;nbsp;+&amp;nbsp;LeftThumbstick&amp;nbsp;*&amp;nbsp;distanceThumbsticks,&amp;nbsp;Color.White);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt;"&gt;在本节的Demo中，左手遥控杆用于移动角色。需要说明一点，基于XNA右手坐标系下，一个场景模型从3DMAX中默认坐标系中导入进游戏，角色若要在其表面上移动，改变的不是X、Y值，而是X、Z值，Y值代表实际高低深度，这与后面章节将要讲到的HeightMap有很大区别：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="line-height: 28px; font-size: 19px;"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120523/9.jpg" width="705" height="376" /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt;"&gt;右手遥控杆则用来旋转摄像机和角色(模拟PC中的鼠标右键按住不放时的场景旋转功能)，实际游戏开发中大家可以在此基础上作更进一步设计，比如单击、双击、长时按压以实现主角攻击、射击、特技、魔法等行为，使得遥控杆功能得以最大化，满足游戏更多的操控需求：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="line-height: 28px; font-size: 19px;"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120523/10.jpg" width="799" height="428" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; color: #232323; font-size: 14pt;"&gt;本节源码中集成了EngineNine源码的核心部分，源码下载地址：&lt;/span&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt;"&gt;&lt;a href="http://www.cangod.com/Source/%28WP%29SLXnaGame2.rar" target="_blank"&gt;(WP)SLXnaGame2&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="line-height: 150%; font-family: 宋体; color: #232323; font-size: 14pt;"&gt;手记小结：&lt;/span&gt;&lt;/strong&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt;"&gt;本节主要讲解了基于不同视角的3D场景搭建以及传统的基于遥控杆的游戏操控功能实现，也算是非常简单的3D游戏开发入门级场景设计知识。后续章节我将在本节源码的基础上进行深度拓展，通过搭建出各种类型的经典3D游戏Demo案例向大家展示SL.XNA在跨平台3D游戏开发方面的强大与高效，敬请关注。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt;"&gt;推荐参考：&lt;/span&gt;&lt;/strong&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt;"&gt;&lt;a href="http://cnblogs.com/nowpaper" target="_blank"&gt;Nowpaper&lt;/a&gt;&lt;/span&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt;"&gt;和&lt;a href="http://www.cnblogs.com/wangergo" target="_blank"&gt;Williams&lt;/a&gt;关于Windows Phone的游戏开发博客。&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/alamiye010/aggbug/2515113.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/alamiye010/archive/2012/05/23/2515113.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/alamiye010/archive/2012/05/08/2490241.html</id><title type="text">Silverlight游戏研发手记：(九)3D 骨骼动画</title><summary type="text">Silverlight 5和Windows Phone 7.1都已具备SL.XNA模式，这意味着我们可以在相关平台上制作高性能的3D游戏及软件产品而无需二次编码。本节，我将借助一些工具为大家讲解SL.XNA的3D实现原理，并演示如何加载并解析一个功能齐全带贴图和骨骼动画的角色模型。从今天开始，通向3D之大门正全方位为您开启！</summary><published>2012-05-08T08:03:00Z</published><updated>2012-05-08T08:03:00Z</updated><author><name>深蓝色右手</name><uri>http://www.cnblogs.com/alamiye010/</uri></author><link rel="alternate" href="http://www.cnblogs.com/alamiye010/archive/2012/05/08/2490241.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/alamiye010/archive/2012/05/08/2490241.html"/><content type="html">&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;Silverlight 5&lt;/span&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;和Windows Phone 7.1都已具备SL.XNA模式，这意味着我们可以在相关平台上制作高性能的3D游戏及软件产品而无需二次编码。本节，我将借助一些工具为大家讲解SL.XNA的3D实现原理，并演示如何加载并解析一个功能齐全带贴图和骨骼动画的角色模型。从今天开始，通向3D之大门正全方位为您开启！&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;关于传统3D游戏的原理并不是本文重点，不再赘述。我们更迫切的需要了解XNA对哪些3D格式支持以便我们可以快速的开始配置开发环境。默认的，XNA开发游戏最常用到.X和.FBX；至于其他的3D文件格式呢？比如Obj、3ds、Md2等等。其实说到底，这与2D游戏中对精灵帧图的解析原理一样，无论什么类型的3D格式，其本质不过就一树形结构文本而已，只是内容较多且相对复杂些罢了；通过之前的教程学习，相信大家都已掌握了&lt;a href="http://www.cnblogs.com/luckdv/articles/1728088.html?login=1" target="_blank"&gt;如何解析自定义的xml文件&lt;/a&gt;&lt;/span&gt;，&lt;a href="http://shiba.hpe.sh.cn/jiaoyanzu/WULI/showArticle.aspx?articleId=414&amp;amp;classId=4" target="_blank"&gt;&lt;span style="font-size: 14pt"&gt;那么通过代码或事先编写好的工具对各类3D文件格式进行解析相信亦并非难事&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: 14pt"&gt;，然后再将之与XNA的3D API对接，从而最终达到展示模型及运行骨骼动画等功能。不难看出，XNA游戏的核心也是最关键环节便是对资源的承载与解析，我们通常称之为内容管道 (ContentPipline)，该管道提供了相应接口可随意扩展，从而达到高度自由且全方位覆盖的目的。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;3D&lt;/span&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;比起2D来说水深得多，因此为了效率同时也为了降低入门成本，我们完全可以通过一些网上现有资源或开源项目来获取编写好的3D模型内容管道，在此和大家分享我的经验：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;1)&lt;a href="http://creators.xna.com/en-us/sample/skinnedmodel" target="_blank"&gt;Skinning Sample&lt;/a&gt; &amp;#8211; &lt;/span&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;官方提供的XNA入门级骨骼动画演示Demo(实用度&lt;strong&gt;&amp;#9733;&lt;/strong&gt;)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="line-height: 28px; font-size: 19px"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120508/0.png" width="711" height="380" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;这是微软官方为初学者提供的XNA解析.FBX格式骨骼动画之经典案例，从此，Dude这个名字变得家喻户晓。该源码的核心部分是以下两个类库：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="line-height: 28px; font-size: 19px"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120508/1.png" width="231" height="260" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;然而实际情况并不乐观：我曾用它测试不下百个FBX带骨骼动画的模型，能够正确解析并正常显示的寥寥无几，尤其对骨骼数支持方面问题尤为严重。提示大家，仅作为示例学习学习便可，除非你有能力对该内容管道进行二次拓展，否则实用性极低。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;2)&lt;a href="http://www.enchantedage.com/node/24" target="_blank"&gt;KiloWatt Animation&lt;/a&gt; (&lt;/span&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;实用度&lt;strong&gt;&amp;#9733;&amp;#9733;&lt;/strong&gt;)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="line-height: 28px; font-size: 19px"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120508/2.jpg" width="400" height="236" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;这是一款开源的3D骨骼动画解析示例，支持XNA4.0，但目前版本不支持Windows Phone，同时亦测试过十多款.X骨骼动画模型，支持率不高。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;3)&lt;a href="http://animationcomponents.codeplex.com/" target="_blank"&gt;Animation Component&lt;/a&gt; (&lt;/span&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;实用度&lt;strong&gt;&amp;#9733;&amp;#9733;&amp;#9733;&lt;/strong&gt;)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;一位韩国3D游戏大师开发的XNA骨骼动画解析开源组件，功能还蛮全的，而且也附带了比较详细的英文教程，暂时还不支持XNA4.0和Windows Phone。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;4) &lt;a href="http://xnanimation.codeplex.com/" target="_blank"&gt;XNAnimation&lt;/a&gt; (&lt;/span&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;实用度&lt;strong&gt;&amp;#9733;&amp;#9733;&amp;#9733;&lt;/strong&gt;)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;巴西人制作的开源的高性能3D骨骼动画支持演示，据作者说将发布XNA4.0版本，可以保持关注。&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;5)&lt;a href="http://www.ziddu.com/download/16419668/FPSgameSample.rar.html" target="_blank"&gt;3D FPS Source&lt;/a&gt; (&lt;/span&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;实用度&lt;strong&gt;&amp;#9733;&amp;#9733;&amp;#9733;&lt;/strong&gt;)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="line-height: 28px; font-size: 19px"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;很难得的比较完整的XNA 3D射击游戏源码，包含的知识点元素很多，只可惜同样不支持XNA4.0和Windows Phone。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;6) &lt;a href="http://axiom.codeplex.com/wikipage?title=Showcase&amp;amp;referringTitle=Home" target="_blank"&gt;Axiom&lt;/a&gt; (&lt;/span&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;实用度&lt;strong&gt;&amp;#9733;&amp;#9733;&amp;#9733;&amp;#9733;&lt;/strong&gt;)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="line-height: 28px; font-size: 19px"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120508/3.png" width="625" height="381" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;作者介绍如下：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;Axiom Engine is an Open-source, cross-platform 3D rendering engine for .NET and Mono licensed using the LGPL. The engine is a high-performance C# port of the powerful OGRE engine and provides full support for DirectX, OpenGL and XNA on Windows, Linux, Android, iPhone and Windows Phone.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;说实话，如果真的有作者所述之强大，其前途无可掂量；但至少来说，我暂时还未完全实验成功&amp;#8230;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;7)&lt;/span&gt; &lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;&lt;a href="http://xnacommunity.codeplex.com/wikipage?title=WP7&amp;amp;referringTitle=Home" target="_blank"&gt;XNA Community&lt;/a&gt;&lt;/span&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt; (&lt;/span&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;实用度&lt;strong&gt;&amp;#9733;&amp;#9733;&amp;#9733;&amp;#9733;&lt;/strong&gt;)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;超多的XNA各平台游戏源码分享，称其为XNA入门级开发者的福音绝不为过。比如运行于WP7平台上的&lt;a href="http://xnacommunity.codeplex.com/wikipage?title=JuegoIsoWP7&amp;amp;referringTitle=WP7" target="_blank"&gt;劳拉RPG Demo&lt;/a&gt;&lt;/span&gt;，&lt;span style="font-size: 14pt"&gt;该源码对极复杂(各种资源混合压缩)的MD3(雷神之锤3)格式的骨骼动画解析近乎完美，运行效果非常流畅：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="line-height: 28px; font-size: 19px"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120508/4.png" width="279" height="547" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;8)&lt;a href="http://www.mono-project.com/Main_Page" target="_blank"&gt;Mono&lt;/a&gt; (&lt;/span&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;实用度&lt;strong&gt;&amp;#9733;&amp;#9733;&amp;#9733;&amp;#9733;&amp;#9733;&lt;/strong&gt;)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="line-height: 28px; font-size: 19px"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120508/5.png" width="901" height="488" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;不用多做介绍了吧，搞.NET若不知道真可以撞墙了。Write Once Play Everywhere是MONO的终极目标，也是XNA要实现全方位跨平台的主流方法。&lt;a href="http://www.oschina.net/p/mono" target="_blank"&gt;然而，Mono却又并非微软官方所支持的解决方案&lt;/a&gt;&lt;/span&gt;，&lt;span style="font-size: 14pt"&gt;这确实是个令人纠结的技术难题。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;9)&lt;a href="http://nine.codeplex.com/SourceControl/list/changesets" target="_blank"&gt;Engine Nine&lt;/a&gt; (&lt;/span&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;实用度&lt;strong&gt;&amp;#9733;&amp;#9733;&amp;#9733;&amp;#9733;&amp;#9733;&lt;/strong&gt;)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="line-height: 28px; font-size: 19px"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120508/6.png" width="639" height="503" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;一款跨微软所有游戏平台(Windows/Xbox 360/Windows Phone 7/Silverlight)的完全开源3D项目源码(若在商业项目中用到它，请保留Engine Nine的标志，或者&amp;#8230;这个你懂的)，包含的游戏知识面比较很广，总的来说至少可以搭建一套完整的XNA 3D RPG游戏。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;综合各种对比分析，并经过大量的反复测试，最终还是觉得Engine Nine来得给力。尤其是其拓展的素材管道Nine.Content.Pipeline.dll，对&lt;a href="http://www.kwxport.org/" target="_blank"&gt;Kw X-port&lt;/a&gt;导出的&lt;a href="http://www.kwxport.org/"&gt;&lt;/a&gt;.X骨骼动画的支持效果极为出色。下面，我将就如何使用该引擎制作一款SL.XNA模式下的3D模型骨骼动画Demo详细讲解。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;（一）导出骨骼动画模型.X文件&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;从2010版本开始，3D MAX便默认集成了对.FBX格式的导出功能；然而，若想获到.X格式，我们还是得借助比如&lt;a href="http://www.andytather.co.uk/Panda/directxmax_downloads.aspx" target="_blank"&gt;Panda Directx Exporter&lt;/a&gt;或&lt;a href="http://www.kwxport.org/" target="_blank"&gt;Kw X-port&lt;/a&gt;等插件才能实现。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;安装好相应插件后我们重启3D MAX，并打开事先准备好的带骨骼动画的角色模型：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="line-height: 28px; font-size: 19px"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120508/7.png" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;这是一款国产MMORPG中非常标准的&lt;a href="http://www.dogame.com.cn/bbs/viewthread.php?tid=14486" target="_blank"&gt;带全套动作的女侠模型&lt;/a&gt;&lt;/span&gt;，&lt;span style="font-size: 14pt"&gt;很适合作为本节Demo的主角。在导出该模型之前，我们需要特别注意此场景中所包含的全部对象并非只有女侠一个，还包括其手中握的剑；若我们直接点击导出，此时3D MAX会将场景中的所有对象一并导出，而这样得到的.X文件解析起来难度大且没什么意义，毕竟我们得考虑到游戏设计中的换装问题。因此，我们只需选中其中的人物部分，然后点击3D MAX的&amp;#8220;导出&amp;#8221;-&amp;gt;&amp;#8220;导出选定对象&amp;#8221;即可：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="line-height: 28px; font-size: 19px"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120508/8.png" width="664" height="588" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;至于应该选择何种文件类型，针对Engine Nine来说，经反复测试后发现还是Kw X-port导出的.X文件格式解析效果最好：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="line-height: 28px; font-size: 19px"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120508/9.png" width="520" height="261" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;最后也是最关键的环节 - 设置导出参数：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="line-height: 28px; font-size: 19px"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120508/10.png" width="570" height="507" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;常用的导出配置如上图所示，其中我们可以通过右上角的Animation窗口，对该模型的骨骼动画各关键帧进行截取封装并重新命名。比如角色走路动作动画&amp;#8220;Walk&amp;#8221;，在3D MAX中可以通过调整下方的时间轴获悉角色走路动画的帧区间为65-105之间：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="line-height: 28px; font-size: 19px"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120508/11.png" width="647" height="577" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;因此，对应导出参数便是Start = 65, Len = 40。至于其他动作动画导出也依此类推。导出完毕后我们将得到1个.X文件和若干张贴图：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="line-height: 28px; font-size: 19px"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120508/12.png" width="85" height="248" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;显而易见，该模型分为两部分贴图：头部和身体；这就意味着该模型在游戏中能实现3部分的换装：单手武器、头像和衣服。是否有种恍然大悟的感觉？没错，若想为游戏设计实现更为复杂的换装系统，比如衣服、裤子、头饰、护腕、手套、护膝，双手武器等等，则在建模的时候就必须和美术沟通清楚游戏角色方面的需求设定。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;（二）配置游戏项目整体环境&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;按照&lt;a href="http://www.cnblogs.com/alamiye010/archive/2012/03/29/2423524.html" target="_blank"&gt;第六节&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 14pt"&gt;的方法创建一个新的SL.XNA游戏项目，然后在Content项目中将刚才导出的3个文件加载进去（置于Model文件夹下）：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="line-height: 28px; font-size: 19px"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120508/13.png" width="227" height="121" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;是不是觉得这两张贴图文件的文件名不太好记？OK，我们双击Woman.X进入其神秘的内部，搜索一下&amp;#8220;NP134_01.BMP&amp;#8221;，发现它俩正好都处于文件的最尾部：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="line-height: 28px; font-size: 19px"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120508/14.png" width="336" height="290" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;嘿嘿，至于如何处理不用我再多说了吧？&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;文件就位，剩下的便是解析，终于轮到Engine Nine上场了。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;我们首先为Content项目添加拓展的素材管道引用，位于Engine Nice/References/x86/Nine.Content.Pipeline.dll。之后，右键点击Woman.X-&amp;gt;属性-&amp;gt;设置内容处理器为&amp;#8220;Model&amp;#8211; Engine Nine&amp;#8221;：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="line-height: 28px; font-size: 19px"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120508/15.png" width="280" height="212" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;接下来，在游戏项目中添加对Engine Nine/References/Windows Phone/下的Nine.dll和Nice.Graphics.dll的引用：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="line-height: 28px; font-size: 19px"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120508/16.png" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;至此，我们便完成了整体环境的配置工作。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;（三）加载并解析骨骼动画模型&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;万事俱备，终于可以大施拳脚。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;1&lt;/span&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;）加载模型、网格及骨骼的方法代码：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;" onclick="cnblogs_code_show('aa4de737-03cd-490d-aa33-8ee670691787')"&gt;&lt;img style="display: none" id="code_img_opened_aa4de737-03cd-490d-aa33-8ee670691787" class="code_img_opened" onclick="cnblogs_code_hide('aa4de737-03cd-490d-aa33-8ee670691787',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt; &lt;div id="cnblogs_code_open_aa4de737-03cd-490d-aa33-8ee670691787" class="cnblogs_code_hide"&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;_BodyAssetName;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;获取或设置身体模型资产名称&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;BodyAssetName&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;get&lt;/span&gt;&amp;nbsp;{&amp;nbsp;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&amp;nbsp;_BodyAssetName;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;set&lt;/span&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_BodyAssetName&amp;nbsp;=&amp;nbsp;value;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;加载模型资产,检索是否匹配拓展的模型处理管道,并尝试添加该模型的骨骼蒙皮动画等信息&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;body&amp;nbsp;=&amp;nbsp;contentManager.Load&amp;lt;Model&amp;gt;(value);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bodyGeometry&amp;nbsp;=&amp;nbsp;contentManager.Load&amp;lt;Geometry&amp;gt;(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;.Format(&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;{0}Geometry&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;,&amp;nbsp;value));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bodySkeleton&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;ModelSkeleton(body);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;_WeaponAssetName;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;获取或设置武器模型资产名称&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;WeaponAssetName&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;get&lt;/span&gt;&amp;nbsp;{&amp;nbsp;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&amp;nbsp;_WeaponAssetName;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;set&lt;/span&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_WeaponAssetName&amp;nbsp;=&amp;nbsp;value;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;weapon&amp;nbsp;=&amp;nbsp;contentManager.Load&amp;lt;Model&amp;gt;(value);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p align="left"&gt;&lt;font face="宋体"&gt;&lt;span style="line-height: 28px; font-size: 19px"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120508/17.jpg" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;2&lt;/span&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;）动态切换各部位贴图的方法代码(注意Meshes和MeshParts所对应的模型部位)：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;" onclick="cnblogs_code_show('5d2e05d8-b796-49b8-824e-ed51d2604b5a')"&gt;&lt;img style="display: none" id="code_img_opened_5d2e05d8-b796-49b8-824e-ed51d2604b5a" class="code_img_opened" onclick="cnblogs_code_hide('5d2e05d8-b796-49b8-824e-ed51d2604b5a',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt; &lt;div id="cnblogs_code_open_5d2e05d8-b796-49b8-824e-ed51d2604b5a" class="cnblogs_code_hide"&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;_FaceTextureName;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;获取或设置脸部纹理贴图资产名称&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;FaceTextureName&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;get&lt;/span&gt;&amp;nbsp;{&amp;nbsp;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&amp;nbsp;_FaceTextureName;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;set&lt;/span&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_FaceTextureName&amp;nbsp;=&amp;nbsp;value;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(body.Meshes[&lt;span style="color: #800080"&gt;0&lt;/span&gt;].MeshParts[&lt;span style="color: #800080"&gt;0&lt;/span&gt;].Effect&amp;nbsp;&lt;span style="color: #0000ff"&gt;as&lt;/span&gt;&amp;nbsp;BasicEffect).Texture&amp;nbsp;=&amp;nbsp;contentManager.Load&amp;lt;Texture2D&amp;gt;(value);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;_BodyTextureName;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;获取或设置身体纹理贴图资产名称&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;BodyTextureName&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;get&lt;/span&gt;&amp;nbsp;{&amp;nbsp;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&amp;nbsp;_BodyTextureName;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;set&lt;/span&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_BodyTextureName&amp;nbsp;=&amp;nbsp;value;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(body.Meshes[&lt;span style="color: #800080"&gt;0&lt;/span&gt;].MeshParts[&lt;span style="color: #800080"&gt;1&lt;/span&gt;].Effect&amp;nbsp;&lt;span style="color: #0000ff"&gt;as&lt;/span&gt;&amp;nbsp;BasicEffect).Texture&amp;nbsp;=&amp;nbsp;contentManager.Load&amp;lt;Texture2D&amp;gt;(value);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="line-height: 28px; font-size: 19px"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120508/18.jpg" width="582" height="492" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;3&lt;/span&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;）播放单个骨骼动画的方法代码(可通过名称或序号播放相应骨骼动画)：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;" onclick="cnblogs_code_show('7be7f4b3-d826-48fd-b395-ebef7db02d8e')"&gt;&lt;img style="display: none" id="code_img_opened_7be7f4b3-d826-48fd-b395-ebef7db02d8e" class="code_img_opened" onclick="cnblogs_code_hide('7be7f4b3-d826-48fd-b395-ebef7db02d8e',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt; &lt;div id="cnblogs_code_open_7be7f4b3-d826-48fd-b395-ebef7db02d8e" class="cnblogs_code_hide"&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;播放独立骨骼动画&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="name"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;动画名称&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;PlayAnimation(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;name)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BoneAnimation&amp;nbsp;animation&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;BoneAnimation(bodySkeleton,&amp;nbsp;body.GetAnimation(name))&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BlendDuration&amp;nbsp;=&amp;nbsp;TimeSpan.FromSeconds(&lt;span style="color: #800080"&gt;1&lt;/span&gt;)&amp;nbsp;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;不同骨骼动画切换时的过度连贯平滑性,若为0则无过度&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;animationPlayer[&lt;span style="color: #800080"&gt;0&lt;/span&gt;].Play(animation);&amp;nbsp;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;animationPlayer分别对不同动画进行播放,若[n]值相同，则会相互干扰&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="line-height: 28px; font-size: 19px"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120508/19.jpg" width="321" height="236" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;4&lt;/span&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;）播放组合骨骼动画的方法代码(比如魔兽世界中，角色便跑动，便施法，还便转头；这里面涉及的技巧很多，但Engine Nine很给力)：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;" onclick="cnblogs_code_show('dfd113cf-11ba-4545-b67c-422aa88d8453')"&gt;&lt;img style="display: none" id="code_img_opened_dfd113cf-11ba-4545-b67c-422aa88d8453" class="code_img_opened" onclick="cnblogs_code_hide('dfd113cf-11ba-4545-b67c-422aa88d8453',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt; &lt;div id="cnblogs_code_open_dfd113cf-11ba-4545-b67c-422aa88d8453" class="cnblogs_code_hide"&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;播放两组(上下半身)融合骨骼动画&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="upperBodyAnimationName"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;上半身行为动画名&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="lowerBodyAnimationName"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;下半身行为动画名&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;PlayAnimation(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;upperBodyAnimationName,&amp;nbsp;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;lowerBodyAnimationName)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BoneAnimationController&amp;nbsp;upperBody&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;BoneAnimationController(body.GetAnimation(upperBodyAnimationName));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BoneAnimationController&amp;nbsp;lowerBody&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;BoneAnimationController(body.GetAnimation(lowerBodyAnimationName))&amp;nbsp;{&amp;nbsp;Speed&amp;nbsp;=&amp;nbsp;&lt;span style="color: #800080"&gt;0.9f&lt;/span&gt;&amp;nbsp;};&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BoneAnimation&amp;nbsp;animation&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;BoneAnimation(bodySkeleton)&amp;nbsp;{&amp;nbsp;BlendDuration&amp;nbsp;=&amp;nbsp;TimeSpan.FromSeconds(&lt;span style="color: #800080"&gt;1&lt;/span&gt;)&amp;nbsp;};&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;animation.Controllers.Add(upperBody);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;animation.Controllers.Add(lowerBody);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;根据模型实际情况,分上下半身处理两组骨骼动画的融合&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;比如奔跑+暗器,取上半身暗器骨骼动画显示,取下半身奔跑骨骼动画显示&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;animation.Controllers[upperBody].Disable(&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;root&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;,&amp;nbsp;&lt;span style="color: #0000ff"&gt;false&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;animation.Controllers[upperBody].Disable(&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;LThigh&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;,&amp;nbsp;&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;animation.Controllers[upperBody].Disable(&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;RThigh&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;,&amp;nbsp;&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;animation.Controllers[lowerBody].Disable(&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;LPelvis&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;,&amp;nbsp;&lt;span style="color: #0000ff"&gt;false&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;animation.Controllers[lowerBody].Disable(&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;RPelvis&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;,&amp;nbsp;&lt;span style="color: #0000ff"&gt;false&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;animation.Controllers[lowerBody].Disable(&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;RCollar&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;,&amp;nbsp;&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;animation.KeyController&amp;nbsp;=&amp;nbsp;lowerBody;&amp;nbsp;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;以下半身动画为主&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;animation.IsSychronized&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&amp;nbsp;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;是否同步&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;animationPlayer[&lt;span style="color: #800080"&gt;0&lt;/span&gt;].Play(animation);&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="line-height: 28px; font-size: 19px"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120508/20.png" width="325" height="267" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;5&lt;/span&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;）绘制真实影子的方法代码(这是最简单的实现方案，但不是最好的)：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;" onclick="cnblogs_code_show('3af3af4c-83ed-4025-954e-fadb073ab8b0')"&gt;&lt;img style="display: none" id="code_img_opened_3af3af4c-83ed-4025-954e-fadb073ab8b0" class="code_img_opened" onclick="cnblogs_code_hide('3af3af4c-83ed-4025-954e-fadb073ab8b0',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt; &lt;div id="cnblogs_code_open_3af3af4c-83ed-4025-954e-fadb073ab8b0" class="cnblogs_code_hide"&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;绘制模型蒙皮动画&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="modelBatch"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="world"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;DrawSkinnedModel(GameTimerEventArgs&amp;nbsp;e,&amp;nbsp;ModelBatch&amp;nbsp;modelBatch,&amp;nbsp;Matrix&amp;nbsp;world)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&amp;nbsp;(BodyAssetName&amp;nbsp;!=&amp;nbsp;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;.Empty)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;绘制身体骨骼&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;modelBatch.DrawSkinned(body,&amp;nbsp;world,&amp;nbsp;bodySkeleton.GetSkinTransforms(),&amp;nbsp;bodyEffect);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&amp;nbsp;(ShowShadow)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;绘制身体影子&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;modelBatch.DrawSkinned(body,&amp;nbsp;world&amp;nbsp;*&amp;nbsp;shadow&amp;nbsp;*&amp;nbsp;Matrix.CreateTranslation(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;Vector3(-&lt;span style="color: #800080"&gt;17&lt;/span&gt;,&amp;nbsp;-&lt;span style="color: #800080"&gt;17&lt;/span&gt;,&amp;nbsp;-&lt;span style="color: #800080"&gt;18&lt;/span&gt;)),&amp;nbsp;bodySkeleton.GetSkinTransforms(),&amp;nbsp;bodyShadow);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&amp;nbsp;(WeaponAssetName&amp;nbsp;!=&amp;nbsp;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;.Empty)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;绘制武器模型&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;modelBatch.Draw(weapon,&amp;nbsp;bodySkeleton.GetAbsoluteBoneTransform(&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Rfinger&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;)&amp;nbsp;*&amp;nbsp;world,&amp;nbsp;weaponEffect);&amp;nbsp;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;把武器模型附加在手的位置(注:"Rfinger"为模型中手的名称)&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&amp;nbsp;(ShowShadow)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;绘制武器影子&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;modelBatch.Draw(weapon,&amp;nbsp;bodySkeleton.GetAbsoluteBoneTransform(&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Rfinger&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;)&amp;nbsp;*&amp;nbsp;world&amp;nbsp;*&amp;nbsp;shadow&amp;nbsp;*&amp;nbsp;Matrix.CreateTranslation(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;Vector3(-&lt;span style="color: #800080"&gt;17&lt;/span&gt;,&amp;nbsp;-&lt;span style="color: #800080"&gt;17&lt;/span&gt;,&amp;nbsp;-&lt;span style="color: #800080"&gt;18&lt;/span&gt;)),&amp;nbsp;weaponShadow);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p align="left"&gt;&lt;font face="宋体"&gt;&lt;span style="line-height: 28px; font-size: 19px"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120508/21.png" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 宋体; font-size: 14pt"&gt;&amp;nbsp;最后还需要注意一点，关于如何将武器匹配到模型骨骼动画手的位置(实现武器切换功能)，代码中我们这样写：modelBatch.Draw(weapon, bodySkeleton.GetAbsoluteBoneTransform("Rfinger") * world, weaponEffect);其中&amp;#8220;Rfinger&amp;#8221;即对应该模型的右手指部件(当然，实际中应该至于手心处，这个需要和美术沟通好)：&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120508/23.png" width="697" height="556" /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;&amp;nbsp; &amp;nbsp; 总体来说，Engine Nine封装了对.X文件相当完美的骨骼动画解析，就连动画之间的平滑过渡都做得精致到位(BoneAnimation的BlendDuration&lt;/span&gt; &lt;span style="line-height: 28px; font-family: 宋体; font-size: 19px"&gt;参数&lt;/span&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;)，就目前来说，足以满足绝大多数手游或页游的3D游戏设计需求。&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;以下是本节Demo源码下载地址(之后章节将以Windows Phone平台为主，暂时不再提供Silverlight移植版本，开发者们可根据需要自行移植，非常简单)：&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;&lt;a href="http://files.cnblogs.com/alamiye010/(WP)SLXnaGame1.rar" target="_blank"&gt;Windows Phone版本&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;&lt;a href="http://files.cnblogs.com/alamiye010/(SL)SLXnaGame1.rar" target="_blank"&gt;Silverlight版本&lt;/a&gt;(&lt;a href="http://www.cangod.com/" target="_blank"&gt;在线演示&lt;/a&gt;)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="line-height: 28px; font-size: 19px"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120508/22.png" width="727" height="567" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="line-height: 150%; font-family: 宋体; color: #232323; font-size: 14pt"&gt;手记小结：&lt;/span&gt;&lt;/strong&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;目前的Windows Phone平台不支持自定义着色器(电池寿命问题？)，这意味着我们只能使用比如BasicEffect和SkinnedEffect等内置的Shader。而基于浏览器的Silverlight则只能在受信任开启显卡支持的条件下使用3D功能(基于客户端操作系统/显卡等环境因素影响考虑)。虽然依旧存在诸多的不完善，但WP8和WIN8的强劲再一次让我满怀信心；好比本节通过3D MAX + Kw X-port + Engine Nine + SL.XNA构建的极具实用价值的高性能跨平台3D骨骼动画游戏案例，作为向3D进军的第一声号角，谁都无法阻挡我们勇往直前的脚步！&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;推荐参考：&lt;/span&gt;&lt;/strong&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;&lt;a href="http://cnblogs.com/nowpaper" target="_blank"&gt;Nowpaper&lt;/a&gt;&lt;/span&gt;&lt;span style="line-height: 150%; font-family: 宋体; font-size: 14pt"&gt;和&lt;a href="http://www.cnblogs.com/wangergo" target="_blank"&gt;Williams&lt;/a&gt;关于Windows Phone的游戏开发博客。&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/alamiye010/aggbug/2490241.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/alamiye010/archive/2012/05/08/2490241.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/alamiye010/archive/2012/05/03/2480206.html</id><title type="text">HTML5，庞氏傀儡</title><summary type="text">仅以此文献给初出茅庐以及在纠结中往复徘徊的HTML5开发者们</summary><published>2012-05-03T02:37:00Z</published><updated>2012-05-03T02:37:00Z</updated><author><name>深蓝色右手</name><uri>http://www.cnblogs.com/alamiye010/</uri></author><link rel="alternate" href="http://www.cnblogs.com/alamiye010/archive/2012/05/03/2480206.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/alamiye010/archive/2012/05/03/2480206.html"/><content type="html">&lt;p align="center" style="text-align:center;line-height:150%"&gt;&lt;strong&gt;&lt;span style="font-size:14.0pt;line-height: 150%;font-family:宋体"&gt;仅以此文献给初出茅庐以及在纠结中往复徘徊的HTML5开发者们&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;昨天，听朋友说HTML5开发了一款很牛气的3D页游，名叫&lt;a href="http://bd.yi6.com/" target="_blank"&gt;《霸刀》&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; "&gt;。于是乎，我怀着忐忑的心打开了官方网站，注册好账号后才发现：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="font-size: 19px; line-height: 28px;"&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120503/0.png" width="741" height="161" alt="" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="font-size: 19px; line-height: 28px;"&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120503/1.png" width="747" height="472" alt="" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;咋咋呼呼的原以为神一级的WebGL突然转世重生临幸人间；怎知却冒出个非得安装HTML5插件来&amp;#8230;&amp;#8230;大哥，别忽悠我了，你是病毒吧？！&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;说真的，我从来没有听说过HTML5还要安装插件？至于这样玩弄我的感情吗？&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;算了，码农肚里能撑船，不和它计较。哥5月底还要参加在职研究生考试呢，回家好好复习去。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;屁股坐稳，打开家里那台老旧的破电脑，强忍着&amp;#8220;咯吱咯吱&amp;#8221;比锯木头好听点的硬盘声，终于进入了神马《&lt;a href="http://www.cdgdc.edu.cn/tdxlsqxt/login.shtml?action=forwardIndex" target="_blank"&gt;..研究生..平台&lt;/a&gt;&lt;/span&gt;》&lt;span style="font-size: 14pt; "&gt;；你要知道，这可是能与《&lt;/span&gt;&lt;a href="http://www.12306.cn/mormhweb/" target="_blank"&gt;&lt;span style="font-size: 14pt; "&gt;火车&amp;#8230;售票网站&amp;#8230;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: 14pt; "&gt;》一决高下的殿堂级产品，日访问量不下百万的国家顶级IT技术专家开发的网站！不管你信不信，我反正信了。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;接下来又是一场惊心动魄之旅，我用Firefox打开它，突然蹦出乱七八糟的界面，顿时吓得四脚朝天，口吐白沫。你Niang的不兼容Firefox也用不着拿这东西来吓唬我吧？！&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="font-size: 19px; line-height: 28px;"&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120503/2.jpg" width="938" height="571" alt="" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;愤愤的，我果断拿起手中的行动电话致电教育部热线，信息科一位很甜美的声音回复说：您好，感谢您的宝贵意见。我们的系统已经运作了很多年，运行非常稳定，界面清晰，结构合理，得到广大考生们的一致好评，将来打算长期使用下去。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;生气，真的很生气。做为一名职业高强度密集型技术宅男，这是对我智商最深层次的侮辱！郁闷，难道支持HTML5的浏览器比中国人活得还要艰难？&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;算了，哥想得开。因为，还有Chrome嘛。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;嘿嘿，这可是我的最爱；记得上次还在女朋友的电脑里装过，没几天便收到反馈啦：除了说下载很不方便，网银无法正常使用，一些网页打不开，很多网页都怪怪的外，其他都还蛮正常的。这件事让我至今记忆犹新，每每谈起都好不得意。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 14.0pt;line-height:150%;font-family:宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;打断一下，那个啥，兄弟，Chrome?&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family: 宋体"&gt;不会吧？你真不知道什么是Chrome？来，哥教你百度一下：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%; font-family:宋体"&gt;Chrome&lt;/span&gt;&lt;span style="font-size:14.0pt;line-height:150%; font-family:宋体"&gt;，乃谷歌亲生子，曾经的HTML5强力推手；当然了，现在Google又开始了华丽的转身，重新回归插件技术。第一款&lt;a href="http://game.chinanews.com/netgame/01/201112/0917973.html" target="_blank"&gt;号称将改写&amp;#8220;网页游戏&amp;#8221;基于Chrome浏览器独占游戏Bastion登陆App Store了&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; "&gt;，定睛一看原文如下：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%; font-family:宋体"&gt;Bastion&lt;/span&gt;&lt;span style="font-size:14.0pt;line-height:150%; font-family:宋体"&gt;这款游戏的上架充分证明了Chrome的潜力&amp;#8212;&amp;#8212;&lt;strong&gt;&lt;u&gt;&lt;span style="color:red"&gt;之前人们可能认为Chrome充其量只能做出一个Flash或HTML游戏中心，Web Store最终将成网页游戏和浏览器插件的下载中心&lt;/span&gt;&lt;/u&gt;&lt;/strong&gt;，比如供用户射射小鸟之类的&amp;#8230;&amp;#8230;但事实证明这严重低估了Google的野心：浏览器窗口就是游戏窗口，凡是能在机器上运行的游戏，都能在Chrome里直接运行，不需要额外打开任何进程。Google已经通过当前版本的Chrome实现了这个目标。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family: 宋体"&gt;可见，Google正打算将Chrome打造成为浏览器即操作系统的趋势已近成型，这将意味着HTML对它来说完全可忽略不计，所有能为它带来Money的游戏、软件等&lt;strong&gt;&lt;u&gt;&amp;#8220;各种插件应用程序&amp;#8221;&lt;/u&gt;&lt;/strong&gt;才是最终的上帝！&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;刚刚才骂完Firefox的Niang，现在又遇到个龌蹉的超级间谍Google，&lt;a href="http://www.cnblogs.com/zjyuan/archive/2012/01/26/2329554.html" target="_blank"&gt;昨天还在推HTML5，今天就已经开始盘算着全方位转向插件技术&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; "&gt;，还是干爹说得对：进口货都不是好东西，专坑没文化的中国人。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;哎，伤不起呀，亲。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;那我躲总行吧。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;10&lt;/span&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;数年风霜折磨过的HTML4还是比较靠谱的，你瞧我身边那些号称网页工程师的，哪个桌面上不摆上这三个图标那可真叫一个落伍：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="font-size: 19px; line-height: 28px;"&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120503/3.png" width="63" height="248" alt="" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;网页工程师能力如何体现？当然是开发的HTML4代码兼容的浏览器越多越赞啦。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;&amp;#8220;啥？为什么还要做兼容测试？HTML代码不是在所有浏览器下都可以运行吗？&amp;#8221;一位即将实习的大三学生路人庚问我。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family: 宋体"&gt;朋友，W3C知道吗？IE6知道吗？还有IE7/IE8/IE9，Firefox和Chrome，这些浏览器(版本)造就了各自的网页显示标准，同样的HTML代码在不同的浏览器下的显示效果都不一致。记得曾经一位同行老泪纵横的对我说：远离HTML吧，我女朋友就是因为实在看不惯我每天反复不停的在这3款万恶的浏览器中不停的刷新调试，终于弃我而别了&amp;#8230;兄弟，回头是岸&amp;#8230;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family: 宋体"&gt;天杀的！无尽的JS+CSS代码兼容多浏览器轮换调试，消耗了我们网页开发者多少青春和热血？这是对生命最无耻的亵渎&amp;#8230;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;终于，我想通了。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体; font-size: 14pt; line-height: 150%; text-align: center; text-indent: 28.5pt; "&gt;&amp;nbsp; &amp;nbsp; 我要用破笔杆子比作枪，把一肚子怨恨化作子弹，向世界揭露HTML5的傀儡阴谋论！&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family: 宋体"&gt;-&lt;/span&gt;&lt;strong style="font-family: 宋体; font-size: 14pt; line-height: 150%; "&gt;有名无实，傀儡天子 -&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;HTML5 &lt;/span&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;作为世人所尊称的IT界天子，目前的境地非常尴尬：标准由W3C制定并由国外软件巨头们推动，而我们国人开发应用却又得适应国内落后的操作系统及浏览器环境。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;更可悲的是，微软、谷歌、苹果等IT巨头们都各怀私心，盘算着挟天子以令诸侯之事。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;span style="font-size:14.0pt;line-height: 150%;font-family:宋体"&gt;微软的目的&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size:14.0pt;line-height: 150%;font-family:宋体"&gt;：通过宣传IE9/10对HTML5的完美支持进一步推销自己的IE系列浏览器，同时发展HTML5新标准向有利于微软产品方向延伸(不觉得IE10下的HTML5更像是XAML了吗？)，并借此提升在HTML5标准制定方面更强劲的话语权。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;span style="font-size:14.0pt;line-height: 150%;font-family:宋体"&gt;谷歌的阴谋&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size:14.0pt;line-height: 150%;font-family:宋体"&gt;：作为Javascript的干爹，成为最早推动HTML5进程的巨头看似理所当然，然而不久前高调发布的&lt;a href="http://www.cnblogs.com/alamiye010/archive/2011/12/14/2287991.html" target="_blank"&gt;Native Client却让其猥琐的阴谋原形毕露&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; "&gt;：干掉FLASH再发布自己的&amp;#8220;Flash++&amp;#8221;，真乃&amp;#8220;螳螂捕蝉，黄雀在后&amp;#8221;，高，实在是高！&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;span style="font-size:14.0pt;line-height: 150%;font-family:宋体"&gt;苹果的算盘&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size:14.0pt;line-height: 150%;font-family:宋体"&gt;：务实的乔布斯告诉世界：开发苹果游戏产品，用objective-c已近无敌，而为了降低iPhone和iPad中浏览网页的电池消耗，拒绝Flash并使用新版本的HTML让整机性能最优化，绝对是不二选择。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;另外，&lt;strong&gt;对于某些Javascript高手来说&lt;/strong&gt;，推动Javascript的发展，即等同于对自身利益价值的最大化：比如提高Javascript新书销量，获得更多的演讲邀请以及工作机会等等，很现实嘛，人不为己，天诛地灭。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family: 宋体"&gt;总之一句话道破天机：HTML4擅长做什么，HTML5就擅长做什么。没有&amp;lt;Canvas&amp;gt;，HTML4一样可以做动画；没有&amp;lt;Video&amp;gt;，HTML4一样可以播放视频。HTML5只是重新封装了一些控件标签，稍微提高了些性能罢了，仅此而已，不要想太多了。&lt;/span&gt;&lt;/p&gt;  &lt;p align="center" style="text-align:center;line-height:150%"&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;- &lt;/span&gt;&lt;strong&gt;&lt;span style="font-size:14.0pt;line-height: 150%;font-family:宋体"&gt;无需安装插件？别扯蛋了兄弟 -&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;注意了朋友们，HTML5扯了一个天大的谎言：在目前世界绝大多数的电脑上要运行HTML5程序，都必须安装比插件更可怕，名字叫IE9/Firefox/Chrome的浏览器；如果说插件已足够让客户/玩家闻风丧胆，那么安装浏览器不等同于自掘坟墓？别告诉我你不知道啥是浏览器呀，请百度一下。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family: 宋体"&gt;口说无凭，好吧，翻箱倒柜愣是给我找到了一款名叫&lt;a href="http://game.21cn.com/online/global/2012/03/16/11170350.shtml" target="_blank"&gt;《命令与征服》&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; "&gt;的HTML5网页游戏，撇开该游戏我10年前便能独立开发完成不说，如此古老的产品硬是般上本来就不成熟的HTML5平台，那个性能呀&amp;#8230;算了，我们还是来看原文吧，&lt;/span&gt;&lt;a href="http://news.cnblogs.com/n/127916/" target="_blank"&gt;&lt;span style="font-size: 14pt; "&gt;亮点大家自己找哈&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: 14pt; "&gt;：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="font-size: 19px; line-height: 28px;"&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120503/4.png" alt="" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 14.0pt;line-height:150%;font-family:宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;啥？我欺负人？好吧，暂时把HTML5放一边,我们不妨来看看它的老爸HTML4啥德行。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family: 宋体"&gt;这是一款HTML4开发的网页游戏：《&lt;a href="http://sgh.3595.com/" target="_blank"&gt;三国魂&lt;/a&gt;&lt;/span&gt;》&lt;/p&gt;  &lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="font-size: 19px; line-height: 28px;"&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120503/5.jpg" width="639" height="252" alt="" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family: 宋体"&gt;别惊讶，官方大义凌然，毫不留情的撇开中国数以亿计装着IE6/IE7的XP用户，指名道姓点名必须使用它所推荐的3款浏览器方能正常游戏；造反呀！哥们？你当玩家是萝卜呀？到底你是上帝还是客户是上帝？&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 14.0pt;line-height:150%;font-family:宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;类似的案例数不胜数，就好比每次看到下面这个对话框所带给我的视觉冲击，让我彻夜难寐&amp;#8230;，我谨代表中国80%+的用户对此深表遗憾。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="font-size: 19px; line-height: 28px;"&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120503/6.png" alt="" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;事实便是如此，&lt;a href="http://news.cnblogs.com/n/140967/" target="_blank"&gt;&lt;span style="color:#551A8B"&gt;Windows XP全球依旧占据着46%的份额，仍然最受欢迎&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; "&gt;；注意了，46%是相对于全球而言，很抱歉的告诉大家，中国这个神奇的国度拖了世界的大后腿，至于具体多少，问问中国的网民不就知道了？&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;为什么中国的网吧不用WIN7操作系统？&lt;a href="http://www.google.com.hk/#hl=zh-CN&amp;amp;newwindow=1&amp;amp;safe=strict&amp;amp;site=&amp;amp;q=%E7%BD%91%E5%90%A7%E4%B8%BA%E4%BB%80%E4%B9%88%E4%B8%8D%E7%94%A8WIN7&amp;amp;oq=%E7%BD%91%E5%90%A7%E4%B8%BA%E4%BB%80%E4%B9%88%E4%B8%8D%E7%94%A8WIN7&amp;amp;aq=f&amp;amp;aqi=&amp;amp;aql=&amp;amp;gs_sm=3&amp;amp;gs_upl=1552l5480l0l5794l29l" target="_blank"&gt;Google回答说&lt;/a&gt;&lt;/span&gt;：&lt;/p&gt;  &lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="font-size: 19px; line-height: 28px;"&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120503/7.jpg" width="589" height="173" alt="" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;为什么中国的企事业单位及家庭大多是XP操作系统？&lt;a href="http://www.missyuan.com/thread-411701-1-1.html" target="_blank"&gt;国内的开发人员回答说&lt;/a&gt;&lt;/span&gt;：&lt;/p&gt;  &lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="font-size: 19px; line-height: 28px;"&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120503/8.jpg" width="592" height="200" alt="" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="font-size: 19px; line-height: 28px;"&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120503/9.jpg" width="788" height="313" alt="" /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120508/111.jpg" width="648" height="153" alt="" /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style="font-family: 宋体; font-size: 14pt; line-height: 150%; "&gt;还记得之前每天都在上演的IE6棺材闹剧吗？敢问你敢当着局长面卸载掉他的WIN XP？敢问你有胆量把网吧里的所有电脑都换成WIN 7 ？敢问你有绝对实力重写所有银行网银插件？敢问你有无限超能力让所有传统行业软件都兼容WIN7？别美了，VB6在他们心中依旧是神。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;白云呀！黑土！只恨XP下的IE版本永远升级不到9，你说这是可歌可泣呢还是双输模式？&lt;/span&gt;&lt;/p&gt;  &lt;p align="center" style="text-align:center;line-height:150%"&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;- &lt;/span&gt;&lt;strong&gt;&lt;span style="font-size:14.0pt;line-height: 150%;font-family:宋体"&gt;未来所有游戏都使用HTML5开发？你呀的喝多了吧&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt; &lt;strong&gt;-&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%; font-family:宋体"&gt;HTML5&lt;/span&gt;&lt;span style="font-size:14.0pt;line-height:150%; font-family:宋体"&gt;从小立志成为一位伟大的游戏设计师。人小志气大，&lt;a href="http://news.cnblogs.com/n/127368/" target="_blank"&gt;自身标准都还未确定&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; "&gt;的HTML5便已凭借其先天优势在IT界崭露头角。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family: 宋体"&gt;某天，HTML5敲开苹果公司的大门：&amp;#8220;你好，我想应聘IOS游戏主程？&amp;#8221;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family: 宋体"&gt;苹果游戏专家Objective-c微笑着回答说：&amp;#8220;小伙子，你更适合帮助用户浏览网页&amp;#8221;。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%; font-family:宋体"&gt;HTML5&lt;/span&gt;&lt;span style="font-size:14.0pt;line-height:150%; font-family:宋体"&gt;极不甘心一辈子帮Objective-c打下手，于是来到了Google的人力资源部：&amp;#8220;你好，我想应聘高级工程师。&amp;#8221;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family: 宋体"&gt;正巧编程大师Java就坐在旁边：&amp;#8220;兄弟，来切磋一下，是比性能还是效率？你选。对了，我也是开源的哦。&amp;#8221;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family: 宋体"&gt;此处省略250个字&amp;#8230;&amp;#8230;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%; font-family:宋体"&gt;HTML5&lt;/span&gt;&lt;span style="font-size:14.0pt;line-height:150%; font-family:宋体"&gt;灰头灰脸的捧着简历来到了微软大厦楼下，这是它的最后一个Offer了。深深的吸了一口气，心想：&amp;#8220;若是能够成为Windows Phone的项目一把手，钱途无量呀！&amp;#8221;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family: 宋体"&gt;卯足了勇气，可HTML5万万没想到此次面对的乃是有着微软双煞之称的Silverlight和XNA。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family: 宋体"&gt;此处省略386个字&amp;#8230;&amp;#8230;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%; font-family:宋体"&gt;HTML5&lt;/span&gt;&lt;span style="font-size:14.0pt;line-height:150%; font-family:宋体"&gt;仰天长叹！&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="font-size: 19px; line-height: 28px;"&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120503/10.jpg" width="584" height="707" alt="" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family: 宋体"&gt;回家的途中偶遇一算命先生，看过手相后连连摇头，伸出手指有三：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family: 宋体"&gt;其一：朋友，你想成为移动设备游戏开发工程师，你是否考虑过电池方面的问题？一大堆几乎得不到硬件加速的图片、粒子、动画、特效甚至3D模型，这让本就极其珍贵的移动设备电池电量情何以堪？&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family: 宋体"&gt;其二：你是否考虑过你那低效的解释执行脚本语言Javascript是否能够胜任复杂而庞大的游戏项目开发？就它那性能？用&amp;#8220;悲剧&amp;#8221;来形容都嫌对不起这词。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family: 宋体"&gt;其三：你是否考虑过当别人接手你开发的产品进行升级维护或二次开发时的无限痛苦？连强大的开发工具都不具备，产品的安全性及拓展性从何谈起？难道你打算让其他程序员陪你加班熬夜事倍功半？&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family: 宋体"&gt;小兄弟，你还是得多反思下自己为什么不能用C#、JAVA或者Object-C进行游戏开发，成天守着Javascript你侬我侬的，吊死在一棵树上有意思吗？看看人家Unity3D多聪明，脚踏几条船；你也不比Flash，毕竟人家先入为主；你又不像富二代Silverlight那样有个强悍的亲爹。所以，还是安分的从基层开始打拼吧。既然上帝赋予你了Canvas这么好的天赋技能，做做小游戏，小动画之类的，搞点网页创意也能赚钱呀，行行出状元嘛。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 14.0pt;line-height:150%;font-family:宋体"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="font-size: 14.0pt;line-height:150%;font-family:宋体"&gt;听此一席话，HTML5茅舍顿开。&lt;/span&gt;&lt;/p&gt;  &lt;p align="center" style="text-align:center;line-height:150%"&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;- &lt;strong&gt;HTML5&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;，敢问路在何方&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt; &lt;strong&gt;-&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%; font-family:宋体"&gt;HTML5&lt;/span&gt;&lt;span style="font-size:14.0pt;line-height:150%; font-family:宋体"&gt;作为HTML4的下一个版本，无可非议，按照进化论法则，新事物总会取代旧事物，有那么一天HTML5会全面取代HTML4。不过可别忘了一点，HTML4、HTML5甚至什么HTML6、HTML7&amp;#8230;其本质不过都是HTML标记语言而已，后面版本号加个1就能成仙啦？&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;在国外，尤其是欧美国家，对HTML5呼声很高，推崇的团体也很多，但实际的应用却很少，更多的则是在探路；欧美人比中国人更热衷于追求时尚，他们对HTML5的前期铺垫与布局总是显得义无反顾。因此，如果你的HTML5应用/外包是针对欧美等发达国家，相信这条路你没选错。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family: 宋体"&gt;反观国内，瞎跟风是国人本性，很多朋友就算一无所知，但浏览网页时一不小心看到了HTML5的软文水文便开始上瘾成性，仿若IT界的庞氏传销，深陷其中而不可自拔；不可否认，本人也是类似的始作俑者，但我更加务实而非追虚；我更习惯用实实在在的代码和Demo证明我所命题的结论是正确的。而目前HTML5在国内甚至连一款成功的产品都没见过，更别说向大规模领域进军了。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family: 宋体"&gt;或许5至10年后，甚至更久的未来，HTML5终会迎来登基的那天，可惜地球依旧在转。对于程序员来说，网页里的Javascript程序会显得不那么别扭了；而对于用户来说，其实啥也没有改变。客户们永远不知道什么叫Canvas，什么是HTML5，他们只知道屏幕里摆着一张比较炫的网页，仅此而已。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%; font-family:宋体"&gt;5&lt;/span&gt;&lt;span style="font-size:14.0pt;line-height:150%; font-family:宋体"&gt;至10年后，相信那时很多像我一样的中年人已经不再写代码了。程序员这个行业兴起较晚，仅仅几十年依旧无法通过科学的概率统计归纳和证明长期电脑辐射与高强度脑力劳动对人体机能的潜在影响；外加持续的颈椎病、肩周炎和腰椎间盘突出等职业病困扰。试想，我仅用了整3年业余时间便已完成了60余万字的博文和无法统计的超量原创代码，而5年呢，我心中的梦想已了然实现了吧；至于10年后或者更久，我想还是等过了2012再从长计议吧。&lt;/span&gt;&lt;/p&gt;  &lt;p align="center" style="text-align:center;line-height:150%"&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;- &lt;/span&gt;&lt;strong&gt;&lt;span style="font-size:14.0pt;line-height: 150%;font-family:宋体"&gt;脱掉有色眼镜看HTML5&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt; &lt;strong&gt;-&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;看到这，相信依旧有那么一群HTML5的卫道士们会对此嗤嗤以鼻。没错，反观你们在喷C#，在喷Silverlight时那种猥亵表情，我宁愿用事实证据和案例来捍卫我忠贞不渝的立场；可是，你们拿得出来吗？别愤青了，伤不起啊小朋友们。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;HTML5&lt;/span&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;其实充其量不过一概念车，相当的酷炫。然而你是否想过，假如让这么一辆还在完善中的概念车跑上高速公路，会是件多么恐怖的事？&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;一位大哥曾经说过：&amp;#8220;HTML5是未来的趋势，但不是现在的优势。&amp;#8221;进化论演绎着万事万物进化的完整过程而非一蹴而就。随时间沉淀，伴着&amp;#8220;天时、地利、人和&amp;#8221;，进化必然降临，无须多虑；拔苗助长与急于求成只会物极必反。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family: 宋体"&gt;有那么一天，我会用它来制作超酷的网站，就像我10年前用FrontPage打开我生命中第一张网页一样兴奋不已。&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/alamiye010/aggbug/2480206.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/alamiye010/archive/2012/05/03/2480206.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/alamiye010/archive/2012/05/02/2478709.html</id><title type="text">Silverlight游戏研发手记：(八)向Windows Phone移植之2D跨平台迁移</title><summary type="text">Silverlight 5集成了XNA，Windows Phone 7.1同样也拥有SL.XNA模式，基于Mono的开源产品Moonlight更能实现多平台部署；可见，Silverlight离跨平台的终极目标已越来越近。</summary><published>2012-05-02T03:11:00Z</published><updated>2012-05-02T03:11:00Z</updated><author><name>深蓝色右手</name><uri>http://www.cnblogs.com/alamiye010/</uri></author><link rel="alternate" href="http://www.cnblogs.com/alamiye010/archive/2012/05/02/2478709.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/alamiye010/archive/2012/05/02/2478709.html"/><content type="html">&lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;&lt;a href="http://news.cnblogs.com/n/140945/" target="_blank"&gt;Silverlight 5&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;集成了XNA，Windows Phone 7.1同样也拥有SL.XNA模式，基于Mono的开源产品&lt;a href="http://www.mono-project.com/Moonlight" target="_blank"&gt;Moonlight&lt;/a&gt;更能实现多平台部署；可见，Silverlight离跨平台的终极目标已越来越近。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;为了向伟大的梦想迈进，我们不妨先从Silverlight与Windows Phone 2D的双向迁移开始深入探索。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;本系列前5节我曾为大家讲解了一款基于Silverlight浏览器插件的SLG游戏Demo，该游戏作为向Windows Phone平台无缝迁移案例再好不过，只需简单几个步骤而已：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;1&lt;/span&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;、按照&lt;a href="http://www.cnblogs.com/alamiye010/archive/2012/03/29/2423524.html" target="_blank"&gt;第六节&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; "&gt;的方法创建一个SL.XNA模式的Windows Phone游戏项目。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;2&lt;/span&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;、打开&lt;a href="http://www.cnblogs.com/alamiye010/archive/2012/01/19/2327574.html" target="_blank"&gt;第五节&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; "&gt;的那款&lt;/span&gt;&lt;a href="http://www.cnblogs.com/alamiye010/archive/2012/01/19/2327574.html" target="_blank"&gt;&lt;span style="font-size: 14pt; "&gt;SLG Demo游戏源码&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: 14pt; "&gt;，将其中的所有类和代码拷贝到第1步的项目中。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;3&lt;/span&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;、运行游戏项目(&lt;a href="http://files.cnblogs.com/alamiye010/(WP)SLXnaGame3_1.rar" target="_blank"&gt;WP版本源码下载&lt;/a&gt;)&lt;/span&gt;。&lt;/p&gt;  &lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="font-size: 19px; line-height: 28px;"&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120502/1.png" width="709" height="378" alt="" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;无语了&amp;#8230;这不是开玩笑吧？有这么简单？&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;没错，若将两个项目的代码整合成一个，就成了真正意义上的完美跨平台了。为了进一步证明该观点的正确性，我通过以上方法如法炮制了另外一款教程中的&lt;a href="http://silverfuture.cn/LessonSource/LessonSource(Static).rar" target="_blank"&gt;Silverlight ARPG游戏Demo源码&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; "&gt;，整个过程不过几分钟而已(&lt;/span&gt;&lt;a href="http://files.cnblogs.com/alamiye010/(WP)SLXnaGame3_2.rar" target="_blank"&gt;&lt;span style="font-size: 14pt; "&gt;WP版本源码下载&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: 14pt; "&gt;)：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="宋体"&gt;&lt;span style="font-size: 19px; line-height: 28px;"&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120502/0.png" width="710" height="378" alt="" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;苍天呀！大地呀！坑爹呀？&lt;/span&gt;&lt;/p&gt;  &lt;p align="left" style="text-align:left;text-indent:28.0pt;line-height:150%; text-autospace:none"&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family: 宋体"&gt;先莫感叹，这样的跨平台移植效率很夸张，对于性能要求不高的2D游戏来说性价比非常不错，尤其是优化过Storyboard和DispatcherTimer的Silverlight 2D游戏，其实际效果尤其出色；&lt;/span&gt;&lt;/p&gt;  &lt;p align="left" style="text-align:left;text-indent:28.0pt;line-height:150%; text-autospace:none"&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family: 宋体"&gt;不过，凡事还得两面看。&lt;/span&gt;&lt;/p&gt;  &lt;p align="left" style="text-align:left;text-indent:28.0pt;line-height:150%; text-autospace:none"&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family: 宋体"&gt;若游戏运算量大，同屏呈现的图形数量多、尺寸大，甚至大量3D模型，那么对于配置依旧还不算太高的Windows Phone手机来说，该方案绝对不可取。于是我们便得从Silverlight 5和Windows Phone中的SL.XNA模式着手进一步探寻完美解决之道。&lt;/span&gt;&lt;/p&gt;  &lt;p align="left" style="text-align:left;text-indent:28.0pt;line-height:150%; text-autospace:none"&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family: 宋体"&gt;是动真格的时候了，从下一节开始，我将肩负起构建跨平台3D游戏之重任，更加深入的为大家讲解如何搭建基于Silverlight与Windows Phone之间的高性能3D游戏框架，&lt;a href="http://www.cangod.com/" target="_blank"&gt;Silverlight 3D之门&lt;/a&gt;&lt;/span&gt;明天即将全面开启~敬请关注。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;推荐参考：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;&lt;a href="http://cnblogs.com/nowpaper" target="_blank"&gt;Nowpaper&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:14.0pt;line-height:150%;font-family:宋体"&gt;和&lt;a href="http://www.cnblogs.com/wangergo" target="_blank"&gt;Williams&lt;/a&gt;关于Windows Phone的游戏开发博客。&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/alamiye010/aggbug/2478709.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/alamiye010/archive/2012/05/02/2478709.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/alamiye010/archive/2012/04/11/2442058.html</id><title type="text">Silverlight游戏研发手记：(七)向Windows Phone移植之双向交互</title><summary type="text">SL.XNA模式乃集大成者，无论开发2D或是3D游戏，Silverlight负责制作UI高效且便捷，XNA则专业绘制高性能精灵与模型，分工明确，结构合理，互利互补。掌握好SL.XNA开发模式，深刻透析游戏结构布局，分工合作处理好游戏各环节逻辑关系，游戏整体“效率”与“性能”必将最大化。</summary><published>2012-04-11T03:49:00Z</published><updated>2012-04-11T03:49:00Z</updated><author><name>深蓝色右手</name><uri>http://www.cnblogs.com/alamiye010/</uri></author><link rel="alternate" href="http://www.cnblogs.com/alamiye010/archive/2012/04/11/2442058.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/alamiye010/archive/2012/04/11/2442058.html"/><content type="html">&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; line-height: 150%"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;继完成游戏主体框架搭建后，接下来我将通过&lt;span lang="EN-US"&gt;SL.XNA&lt;/span&gt;模式中&lt;span lang="EN-US"&gt;Silverlight&lt;/span&gt;控件与&lt;span lang="EN-US"&gt;XNA&lt;/span&gt;对象之间双向交互操作的例子，向大家进一步讲解框架的拓展使用及简单的承载演示。在此之前大家需要理解&lt;span lang="EN-US"&gt;Windows Phone&lt;/span&gt;移动设备与传统桌面设备在操作方面的差异。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; line-height: 150%"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;直观上看，桌面应用大多使用鼠标加键盘的操作方式：鼠标左键、中键、右键，包括单击&lt;span lang="EN-US"&gt;(&lt;/span&gt;按下、放开&lt;span lang="EN-US"&gt;)&lt;/span&gt;、双击以及滑动、拖动、滚动等；而&lt;span lang="EN-US"&gt;Windows Phone&lt;/span&gt;的操作方式则以&lt;span lang="EN-US"&gt;&lt;a href="http://www.devdiv.com/Windows_Phone&amp;#232;&amp;#167;&amp;#166;&amp;#230;&amp;#184;&amp;#229;&amp;#177;-&amp;#232;&amp;#190;&amp;#229;&amp;#165;&amp;#229;&amp;#164;&amp;#231;-article-3329-1.html" target="_blank"&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman" color="#0000ff"&gt;触控&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;加&lt;span lang="EN-US"&gt;&lt;a href="http://www.cnblogs.com/liulunet/archive/2012/02/21/2361883.html" target="_blank"&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman" color="#0000ff"&gt;虚拟键盘&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;为主：按下、放开、按住滑动、各种&lt;span lang="EN-US"&gt;(&lt;/span&gt;多指&lt;span lang="EN-US"&gt;)&lt;/span&gt;手势等；当然，也可以实现像&lt;span lang="EN-US"&gt;NDS&lt;/span&gt;那样通过麦克风实现&lt;span lang="EN-US"&gt;&lt;a href="http://www.gamehome.tv/Article/nds/200906/2381.shtml" target="_blank"&gt;&lt;font color="#0000ff"&gt;&lt;font face="Times New Roman"&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;语音&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;与游戏的交互&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;。而&lt;span lang="EN-US"&gt;Windows Phone&lt;/span&gt;游戏开发中则触摸以为主要输入方式，下面我将分开讲解各种触控操作在&lt;span lang="EN-US"&gt;Windows Phone&lt;/span&gt;中的代码实现。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%; text-align: left; mso-layout-grid-align: none" align="left"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;一、&lt;span lang="EN-US"&gt;XNA&lt;/span&gt;中的触控操作&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28pt; line-height: 150%; text-align: left; mso-layout-grid-align: none; mso-char-indent-count: 2.0" align="left"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;在此之前，很有必要向新手朋友们简要阐述一下&lt;span lang="EN-US"&gt;XNA&lt;/span&gt;的运行机制：&lt;span lang="EN-US"&gt;XNA&lt;/span&gt;是通过传统的轮询&lt;span lang="EN-US"&gt;(&lt;/span&gt;循环&lt;span lang="EN-US"&gt;)&lt;/span&gt;方式呈现游戏的，即每秒钟对游戏逻辑进行&lt;span lang="EN-US"&gt;N&lt;/span&gt;次&lt;strong style="mso-bidi-font-weight: normal"&gt;数据更新&lt;/strong&gt;&lt;span lang="EN-US"&gt;(Update)&lt;/span&gt;并将对象重新&lt;strong style="mso-bidi-font-weight: normal"&gt;绘制到屏幕上&lt;/strong&gt;&lt;span lang="EN-US"&gt;(Draw),&lt;/span&gt;这个频率&lt;span lang="EN-US"&gt;N&lt;/span&gt;在代码中的设定为&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%; font-family: NSimSun; mso-font-kerning: 0pt; mso-bidi-font-family: NSimSun"&gt;timer.UpdateInterval = &lt;span style="color: #2b91af"&gt;TimeSpan&lt;/span&gt;.FromTicks(333333);&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt; &lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;即&lt;span lang="EN-US"&gt;30fps(30&lt;/span&gt;帧每秒&lt;span lang="EN-US"&gt;)&lt;/span&gt;。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28pt; line-height: 150%; text-align: left; mso-layout-grid-align: none; mso-char-indent-count: 2.0" align="left"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;举个例子：假如我们想让一名战士从&lt;span lang="EN-US"&gt;(0,0)&lt;/span&gt;坐标向&lt;span lang="EN-US"&gt;(300,300)&lt;/span&gt;坐标移动，若该战士的移动速度系数&lt;span lang="EN-US"&gt;Speed=5&lt;/span&gt;，那么我们只需在&lt;span lang="EN-US"&gt;Update()&lt;/span&gt;方法中让他的位置属性&lt;span lang="EN-US"&gt;(X,Y)&lt;/span&gt;分别加上&lt;span lang="EN-US"&gt;Speed(X+Speed,Y+Speed)&lt;/span&gt;，于是两秒钟后战士将到达目的地&lt;span lang="EN-US"&gt;(X+2*5*30&lt;/span&gt;，&lt;span lang="EN-US"&gt;Y+2*5*30)=(300,300)&lt;/span&gt;。根据前面所述游戏循环机制，每执行&lt;span lang="EN-US"&gt;Update&lt;/span&gt;数据一次，屏幕就会擦除掉之前的画面然后重新&lt;span lang="EN-US"&gt;Draw&lt;/span&gt;新的画面，于是在这两秒钟内，战士的位置会发生&lt;span lang="EN-US"&gt;2*30=60&lt;/span&gt;次变化，依次为&lt;span lang="EN-US"&gt;(0,0),(5,5),(10,10),(15,15)&amp;#8230;&amp;#8230;(295,295),(300,300)&lt;/span&gt;。短短&lt;span lang="EN-US"&gt;2&lt;/span&gt;秒钟的时间里战士位置连续变化了&lt;span lang="EN-US"&gt;60&lt;/span&gt;次，游戏屏幕好比黑板一样，擦了&lt;span lang="EN-US"&gt;60&lt;/span&gt;次，又画了&lt;span lang="EN-US"&gt;60&lt;/span&gt;次，由于频率很高，好比电视欺骗人眼球同样原理，呈现的是一种连续的动态效果，最终便形成了游戏意义上的&amp;#8220;战士移动&amp;#8221;动画。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%; text-align: left; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&lt;v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"&gt;&lt;v:stroke joinstyle="miter"&gt;&lt;/v:stroke&gt;&lt;v:formulas&gt;&lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @0 1 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum 0 0 @1"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @2 1 2"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @3 21600 pixelWidth"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @3 21600 pixelHeight"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @0 0 1"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @6 1 2"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @7 21600 pixelWidth"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @8 21600 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @7 21600 pixelHeight"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @10 21600 0"&gt;&lt;/v:f&gt;&lt;/v:formulas&gt;&lt;v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"&gt;&lt;/v:path&gt;&lt;o:lock v:ext="edit" aspectratio="t"&gt;&lt;/o:lock&gt;&lt;/v:shapetype&gt;&lt;img height="570" alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120411/0.jpg" width="976" border="0" longdesc="" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; line-height: 150%; text-align: left; mso-layout-grid-align: none" align="left"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;由此我们可以明确：&lt;span lang="EN-US"&gt;XNA&lt;/span&gt;中无论编写什么都必须基于循环，因此&lt;span lang="EN-US"&gt;XNA&lt;/span&gt;模式中无论是低级触控&lt;span lang="EN-US"&gt;(&lt;/span&gt;按下、放开、按住滑动&lt;span lang="EN-US"&gt;)&lt;/span&gt;还是高级&lt;span lang="EN-US"&gt;(&lt;/span&gt;路由&lt;span lang="EN-US"&gt;)&lt;/span&gt;手势，都得&lt;span lang="EN-US"&gt;&lt;a href="http://msdn.microsoft.com/zh-cn/windowsphone/gg490792" target="_blank"&gt;&lt;font color="#0000ff"&gt;&lt;font face="Times New Roman"&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;放在&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;游&lt;span lang="EN-US"&gt;戏&lt;span lang="EN-US"&gt;循环（Update&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;）&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;中&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;进行&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;时时&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;的&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;监测(&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;轮询式)&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;：&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;" onclick="cnblogs_code_show('6c9e8602-bb1f-4702-bd39-28768ff35e89')"&gt;&lt;img class="code_img_closed" id="code_img_closed_6c9e8602-bb1f-4702-bd39-28768ff35e89" alt="" src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" /&gt;&lt;img class="code_img_opened" id="code_img_opened_6c9e8602-bb1f-4702-bd39-28768ff35e89" style="display: none" onclick="cnblogs_code_hide('6c9e8602-bb1f-4702-bd39-28768ff35e89',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt; &lt;div class="cnblogs_code_hide" id="cnblogs_code_open_6c9e8602-bb1f-4702-bd39-28768ff35e89"&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;Update(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&amp;nbsp;sender,&amp;nbsp;GameTimerEventArgs&amp;nbsp;e)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;inputHandler.MonitorTouch();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;inputHandler.MonitorGestures();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;监测触摸(XNA模式,置于Update轮询中)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;MonitorTouch()&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TouchCollection&amp;nbsp;touchCollection&amp;nbsp;=&amp;nbsp;TouchPanel.GetState();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt;&amp;nbsp;(TouchLocation&amp;nbsp;location&amp;nbsp;&lt;span style="color: #0000ff"&gt;in&lt;/span&gt;&amp;nbsp;touchCollection)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TouchEventArgs&amp;nbsp;e&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;TouchEventArgs()&amp;nbsp;{&amp;nbsp;Location&amp;nbsp;=&amp;nbsp;location&amp;nbsp;};&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;switch&lt;/span&gt;&amp;nbsp;(location.State)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&amp;nbsp;TouchLocationState.Pressed:&amp;nbsp;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&amp;nbsp;(Press&amp;nbsp;!=&amp;nbsp;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;Press(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;,&amp;nbsp;e);&amp;nbsp;}&amp;nbsp;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&amp;nbsp;TouchLocationState.Moved:&amp;nbsp;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&amp;nbsp;(Move&amp;nbsp;!=&amp;nbsp;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;Move(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;,&amp;nbsp;e);&amp;nbsp;}&amp;nbsp;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&amp;nbsp;TouchLocationState.Released:&amp;nbsp;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&amp;nbsp;(Release&amp;nbsp;!=&amp;nbsp;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;Release(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;,&amp;nbsp;e);&amp;nbsp;}&amp;nbsp;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;监测手势(XNA模式,置于Update轮询中)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;MonitorGestures()&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;while&lt;/span&gt;&amp;nbsp;(TouchPanel.IsGestureAvailable)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;判断是否还有手势尚未被处理&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GestureSample&amp;nbsp;gesture&amp;nbsp;=&amp;nbsp;TouchPanel.ReadGesture();&amp;nbsp;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;读取尚未处理的手势&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GesturesEventArgs&amp;nbsp;e&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;GesturesEventArgs()&amp;nbsp;{&amp;nbsp;Gesture&amp;nbsp;=&amp;nbsp;gesture&amp;nbsp;};&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;switch&lt;/span&gt;&amp;nbsp;(gesture.GestureType)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&amp;nbsp;GestureType.Tap:&amp;nbsp;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&amp;nbsp;(Tap&amp;nbsp;!=&amp;nbsp;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;Tap(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;,&amp;nbsp;e);&amp;nbsp;}&amp;nbsp;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&amp;nbsp;GestureType.DoubleTap:&amp;nbsp;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&amp;nbsp;(DoubleTap&amp;nbsp;!=&amp;nbsp;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;DoubleTap(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;,&amp;nbsp;e);&amp;nbsp;}&amp;nbsp;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&amp;nbsp;GestureType.Hold:&amp;nbsp;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&amp;nbsp;(Hold&amp;nbsp;!=&amp;nbsp;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;Hold(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;,&amp;nbsp;e);&amp;nbsp;}&amp;nbsp;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&amp;nbsp;GestureType.VerticalDrag:&amp;nbsp;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&amp;nbsp;(VerticalDrag&amp;nbsp;!=&amp;nbsp;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;VerticalDrag(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;,&amp;nbsp;e);&amp;nbsp;}&amp;nbsp;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&amp;nbsp;GestureType.HorizontalDrag:&amp;nbsp;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&amp;nbsp;(HorizontalDrag&amp;nbsp;!=&amp;nbsp;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;HorizontalDrag(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;,&amp;nbsp;e);&amp;nbsp;}&amp;nbsp;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&amp;nbsp;GestureType.FreeDrag:&amp;nbsp;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&amp;nbsp;(FreeDrag&amp;nbsp;!=&amp;nbsp;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;FreeDrag(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;,&amp;nbsp;e);&amp;nbsp;}&amp;nbsp;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&amp;nbsp;GestureType.DragComplete:&amp;nbsp;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&amp;nbsp;(DragComplete&amp;nbsp;!=&amp;nbsp;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;DragComplete(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;,&amp;nbsp;e);&amp;nbsp;}&amp;nbsp;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&amp;nbsp;GestureType.Flick:&amp;nbsp;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&amp;nbsp;(Flick&amp;nbsp;!=&amp;nbsp;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;Flick(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;,&amp;nbsp;e);&amp;nbsp;}&amp;nbsp;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&amp;nbsp;GestureType.Pinch:&amp;nbsp;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&amp;nbsp;(Pinch&amp;nbsp;!=&amp;nbsp;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;Pinch(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;,&amp;nbsp;e);&amp;nbsp;}&amp;nbsp;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&amp;nbsp;GestureType.PinchComplete:&amp;nbsp;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&amp;nbsp;(PinchComplete&amp;nbsp;!=&amp;nbsp;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;PinchComplete(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;,&amp;nbsp;e);&amp;nbsp;}&amp;nbsp;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%; text-align: left; mso-layout-grid-align: none" align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%; text-align: left; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;如果还不能理解&lt;span lang="EN-US"&gt;XNA&lt;/span&gt;的游戏循环原理，大家不妨将游戏循环频率设定为每&lt;span lang="EN-US"&gt;3&lt;/span&gt;秒&lt;span lang="EN-US"&gt;/&lt;/span&gt;次，再进一步测试&lt;span lang="EN-US"&gt;XNA&lt;/span&gt;中触控操作，是否发现了什么？&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%; text-align: left; mso-layout-grid-align: none" align="left"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;二、&lt;span lang="EN-US"&gt;Silverlight&lt;/span&gt;控件的触控操作&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28pt; line-height: 150%; text-align: left; mso-layout-grid-align: none; mso-char-indent-count: 2.0" align="left"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;如果你是一位&lt;span lang="EN-US"&gt;Silverlight(Web)&lt;/span&gt;开发者，你会发现&lt;span lang="EN-US"&gt;Windows Phone&lt;/span&gt;中的&lt;span lang="EN-US"&gt;Silverlight&lt;/span&gt;控件相当给力&lt;span lang="EN-US"&gt;(&lt;/span&gt;以&lt;span lang="EN-US"&gt;Image&lt;/span&gt;控件为例&lt;span lang="EN-US"&gt;)&lt;/span&gt;：&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%; text-align: left; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&lt;img height="594" alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120411/1.jpg" width="222" border="0" longdesc="" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; line-height: 150%; text-align: left; mso-layout-grid-align: none" align="left"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;图中所有框住的事件均为路由触控事件，且慢，居然还有&lt;span lang="EN-US"&gt;Mouse&amp;#8230;&amp;#8230;&lt;/span&gt;事件，刹那间泪崩了，这不是&lt;span lang="EN-US"&gt;BUG&lt;/span&gt;，我反正信了。就如智能感知提示的那样：&lt;span lang="EN-US"&gt;Mouse&lt;/span&gt;这一系列事件是&amp;#8220;触笔的笔尖接触屏幕&amp;#8221;时发生的，类比桌面鼠标事件。而其余紫色框住的部分则为&lt;span lang="EN-US"&gt;Windows Phone&lt;/span&gt;专有触控事件，其中&lt;span lang="EN-US"&gt;Tap&lt;/span&gt;、&lt;span lang="EN-US"&gt;DoubleTap&lt;/span&gt;、&lt;span lang="EN-US"&gt;Hold&lt;/span&gt;和&lt;span lang="EN-US"&gt;XNA&lt;/span&gt;中的一致，剩下的手势则可&lt;span lang="EN-US"&gt;&lt;a href="http://msdn.microsoft.com/zh-cn/magazine/gg650664.aspx" target="_blank"&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;通过3&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;个Manipulation&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;连锁&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;事件自由实现&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;，灵活度相当高。此时或有有朋友会问：同样是路由的&lt;span lang="EN-US"&gt;MouseLeftButtonDown&lt;/span&gt;和&lt;span lang="EN-US"&gt;Tap&lt;/span&gt;到底有何区别？不妨拿起你手中的&lt;span lang="EN-US"&gt;Windows Phone&lt;/span&gt;测试一下不就知道啦&lt;span lang="EN-US"&gt; ^ ^&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28pt; line-height: 150%; text-align: left; mso-layout-grid-align: none; mso-char-indent-count: 2.0" align="left"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;当然，&lt;span lang="EN-US"&gt;&lt;a href="http://www.devdiv.com/Windows_Phone&amp;#232;&amp;#167;&amp;#166;&amp;#230;&amp;#184;&amp;#229;&amp;#177;-&amp;#232;&amp;#190;&amp;#229;&amp;#165;&amp;#229;&amp;#164;&amp;#231;-article-3329-1.html" target="_blank"&gt;&lt;font color="#0000ff"&gt;&lt;font face="Times New Roman"&gt;Silverlight&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;同样&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;也&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;拥有类似XNA&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;中的&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;非路由&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;低级触&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;控&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;。于是我将以上关于&lt;span lang="EN-US"&gt;XNA&lt;/span&gt;与&lt;span lang="EN-US"&gt;Silverlight&lt;/span&gt;的触控操作进行最终整合，以代码的形式封装成一个名为&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; color: #2b91af; line-height: 150%; font-family: NSimSun; mso-font-kerning: 0pt; mso-bidi-font-family: NSimSun"&gt;InputHandler&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;（输入处理器&lt;span lang="EN-US"&gt;)&lt;/span&gt;的类，内置了&lt;span lang="EN-US"&gt;Silverlight&lt;/span&gt;与&lt;span lang="EN-US"&gt;XNA&lt;/span&gt;的所有触控操作&lt;span lang="EN-US"&gt;(&lt;/span&gt;注意了，如果使用该类中的&lt;span lang="EN-US"&gt;XNA&lt;/span&gt;模式触控必须将&lt;span lang="EN-US"&gt;MonitorTouch()&lt;/span&gt;和&lt;span lang="EN-US"&gt;MonitorGestures()&lt;/span&gt;两个方法放置于主循环的&lt;span lang="EN-US"&gt;Update()&lt;/span&gt;中方能起效&lt;span lang="EN-US"&gt;)&lt;/span&gt;：&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;" onclick="cnblogs_code_show('1d239a08-d8e5-424f-ab0f-c2d2616c084f')"&gt;&lt;img class="code_img_closed" id="code_img_closed_1d239a08-d8e5-424f-ab0f-c2d2616c084f" alt="" src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" /&gt;&lt;img class="code_img_opened" id="code_img_opened_1d239a08-d8e5-424f-ab0f-c2d2616c084f" style="display: none" onclick="cnblogs_code_hide('1d239a08-d8e5-424f-ab0f-c2d2616c084f',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt; &lt;div class="cnblogs_code_hide" id="cnblogs_code_open_1d239a08-d8e5-424f-ab0f-c2d2616c084f"&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;输入处理器&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;sealed&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&amp;nbsp;InputHandler&amp;nbsp;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;触摸按下时触发&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;event&lt;/span&gt;&amp;nbsp;EventHandler&amp;lt;TouchEventArgs&amp;gt;&amp;nbsp;Press;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;触摸持续按住并移动时触发&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;event&lt;/span&gt;&amp;nbsp;EventHandler&amp;lt;TouchEventArgs&amp;gt;&amp;nbsp;Move;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;触摸放开时触发&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;event&lt;/span&gt;&amp;nbsp;EventHandler&amp;lt;TouchEventArgs&amp;gt;&amp;nbsp;Release;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;创建输入处理器&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="mode"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;模式&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;InputHandler(TouchModes&amp;nbsp;mode)&amp;nbsp;{&amp;nbsp;Mode&amp;nbsp;=&amp;nbsp;mode;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TouchModes&amp;nbsp;_Mode;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;获取或设置触控模式&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;TouchModes&amp;nbsp;Mode&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;get&lt;/span&gt;&amp;nbsp;{&amp;nbsp;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&amp;nbsp;_Mode;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;set&lt;/span&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_Mode&amp;nbsp;=&amp;nbsp;value;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Touch.FrameReported&amp;nbsp;-=&amp;nbsp;Touch_FrameReported;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TouchPanel.EnabledGestures&amp;nbsp;=&amp;nbsp;GestureType.None;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&amp;nbsp;(value&amp;nbsp;==&amp;nbsp;TouchModes.Silverlight)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Touch.FrameReported&amp;nbsp;+=&amp;nbsp;Touch_FrameReported;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&amp;nbsp;(value&amp;nbsp;==&amp;nbsp;TouchModes.XNA)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;启动所有手势(也可根据实际情况选择部分启动)&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TouchPanel.EnabledGestures&amp;nbsp;=&amp;nbsp;GestureType.Tap&amp;nbsp;|&amp;nbsp;GestureType.DoubleTap&amp;nbsp;|&amp;nbsp;GestureType.Hold&amp;nbsp;|&amp;nbsp;GestureType.FreeDrag&amp;nbsp;|&amp;nbsp;GestureType.Flick&amp;nbsp;|&amp;nbsp;GestureType.Pinch;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;#region&lt;/span&gt;&amp;nbsp;Silverlight模式&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;获取或设置参照物(Silverlight模式)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;UIElement&amp;nbsp;Reference&amp;nbsp;{&amp;nbsp;&lt;span style="color: #0000ff"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="color: #0000ff"&gt;set&lt;/span&gt;;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;Touch_FrameReported(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&amp;nbsp;sender,&amp;nbsp;TouchFrameEventArgs&amp;nbsp;args)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TouchPoint&amp;nbsp;point&amp;nbsp;=&amp;nbsp;args.GetPrimaryTouchPoint(Reference);&amp;nbsp;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;参数若为null则相对于屏幕垂直呈现时的左上角(按键右置水平呈现时的左下角)&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&amp;nbsp;(point&amp;nbsp;!=&amp;nbsp;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TouchEventArgs&amp;nbsp;e&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;TouchEventArgs()&amp;nbsp;{&amp;nbsp;Point&amp;nbsp;=&amp;nbsp;point&amp;nbsp;};&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;switch&lt;/span&gt;&amp;nbsp;(point.Action)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&amp;nbsp;TouchAction.Down:&amp;nbsp;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&amp;nbsp;(Press&amp;nbsp;!=&amp;nbsp;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;Press(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;,&amp;nbsp;e);&amp;nbsp;}&amp;nbsp;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&amp;nbsp;TouchAction.Move:&amp;nbsp;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&amp;nbsp;(Move&amp;nbsp;!=&amp;nbsp;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;Move(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;,&amp;nbsp;e);&amp;nbsp;}&amp;nbsp;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&amp;nbsp;TouchAction.Up:&amp;nbsp;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&amp;nbsp;(Release&amp;nbsp;!=&amp;nbsp;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;Release(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;,&amp;nbsp;e);&amp;nbsp;}&amp;nbsp;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;#endregion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;#region&lt;/span&gt;&amp;nbsp;XNA模式&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;短暂地触控了屏幕上的一个点时触发&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;event&lt;/span&gt;&amp;nbsp;EventHandler&amp;lt;GesturesEventArgs&amp;gt;&amp;nbsp;Tap;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;快速连续点按了屏幕两次时触发&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;event&lt;/span&gt;&amp;nbsp;EventHandler&amp;lt;GesturesEventArgs&amp;gt;&amp;nbsp;DoubleTap;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;触控屏幕上的某一点约一秒钟时间时触发&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;event&lt;/span&gt;&amp;nbsp;EventHandler&amp;lt;GesturesEventArgs&amp;gt;&amp;nbsp;Hold;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;触控屏幕，然后执行水平（从左到右，或从右到左）手势时触发&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;event&lt;/span&gt;&amp;nbsp;EventHandler&amp;lt;GesturesEventArgs&amp;gt;&amp;nbsp;VerticalDrag;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;触控屏幕，然后执行垂直（从顶部到底部，或从底部到顶部）手势时触发&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;event&lt;/span&gt;&amp;nbsp;EventHandler&amp;lt;GesturesEventArgs&amp;gt;&amp;nbsp;HorizontalDrag;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;触控屏幕，然后执行自由格式的拖动手势时触发&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;event&lt;/span&gt;&amp;nbsp;EventHandler&amp;lt;GesturesEventArgs&amp;gt;&amp;nbsp;FreeDrag;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;触控屏幕上的两点，然后聚合或分开两点时触发&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;event&lt;/span&gt;&amp;nbsp;EventHandler&amp;lt;GesturesEventArgs&amp;gt;&amp;nbsp;DragComplete;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;同时执行触控与快速擦过屏幕的操作时触发&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;event&lt;/span&gt;&amp;nbsp;EventHandler&amp;lt;GesturesEventArgs&amp;gt;&amp;nbsp;Flick;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;拖动手势（VerticalDrag、HorizontalDrag&amp;nbsp;或&amp;nbsp;FreeDrag）已完成时触发&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;event&lt;/span&gt;&amp;nbsp;EventHandler&amp;lt;GesturesEventArgs&amp;gt;&amp;nbsp;Pinch;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;收缩操作已完成时触发&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;event&lt;/span&gt;&amp;nbsp;EventHandler&amp;lt;GesturesEventArgs&amp;gt;&amp;nbsp;PinchComplete;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;监测触摸(XNA模式,置于Update轮询中)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;MonitorTouch()&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TouchCollection&amp;nbsp;touchCollection&amp;nbsp;=&amp;nbsp;TouchPanel.GetState();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt;&amp;nbsp;(TouchLocation&amp;nbsp;location&amp;nbsp;&lt;span style="color: #0000ff"&gt;in&lt;/span&gt;&amp;nbsp;touchCollection)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TouchEventArgs&amp;nbsp;e&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;TouchEventArgs()&amp;nbsp;{&amp;nbsp;Location&amp;nbsp;=&amp;nbsp;location&amp;nbsp;};&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;switch&lt;/span&gt;&amp;nbsp;(location.State)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&amp;nbsp;TouchLocationState.Pressed:&amp;nbsp;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&amp;nbsp;(Press&amp;nbsp;!=&amp;nbsp;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;Press(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;,&amp;nbsp;e);&amp;nbsp;}&amp;nbsp;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&amp;nbsp;TouchLocationState.Moved:&amp;nbsp;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&amp;nbsp;(Move&amp;nbsp;!=&amp;nbsp;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;Move(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;,&amp;nbsp;e);&amp;nbsp;}&amp;nbsp;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&amp;nbsp;TouchLocationState.Released:&amp;nbsp;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&amp;nbsp;(Release&amp;nbsp;!=&amp;nbsp;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;Release(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;,&amp;nbsp;e);&amp;nbsp;}&amp;nbsp;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;监测手势(XNA模式,置于Update轮询中)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;MonitorGestures()&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;while&lt;/span&gt;&amp;nbsp;(TouchPanel.IsGestureAvailable)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;判断是否还有手势尚未被处理&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GestureSample&amp;nbsp;gesture&amp;nbsp;=&amp;nbsp;TouchPanel.ReadGesture();&amp;nbsp;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;读取尚未处理的手势&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GesturesEventArgs&amp;nbsp;e&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;GesturesEventArgs()&amp;nbsp;{&amp;nbsp;Gesture&amp;nbsp;=&amp;nbsp;gesture&amp;nbsp;};&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;switch&lt;/span&gt;&amp;nbsp;(gesture.GestureType)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&amp;nbsp;GestureType.Tap:&amp;nbsp;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&amp;nbsp;(Tap&amp;nbsp;!=&amp;nbsp;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;Tap(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;,&amp;nbsp;e);&amp;nbsp;}&amp;nbsp;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&amp;nbsp;GestureType.DoubleTap:&amp;nbsp;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&amp;nbsp;(DoubleTap&amp;nbsp;!=&amp;nbsp;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;DoubleTap(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;,&amp;nbsp;e);&amp;nbsp;}&amp;nbsp;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&amp;nbsp;GestureType.Hold:&amp;nbsp;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&amp;nbsp;(Hold&amp;nbsp;!=&amp;nbsp;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;Hold(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;,&amp;nbsp;e);&amp;nbsp;}&amp;nbsp;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&amp;nbsp;GestureType.VerticalDrag:&amp;nbsp;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&amp;nbsp;(VerticalDrag&amp;nbsp;!=&amp;nbsp;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;VerticalDrag(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;,&amp;nbsp;e);&amp;nbsp;}&amp;nbsp;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&amp;nbsp;GestureType.HorizontalDrag:&amp;nbsp;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&amp;nbsp;(HorizontalDrag&amp;nbsp;!=&amp;nbsp;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;HorizontalDrag(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;,&amp;nbsp;e);&amp;nbsp;}&amp;nbsp;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&amp;nbsp;GestureType.FreeDrag:&amp;nbsp;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&amp;nbsp;(FreeDrag&amp;nbsp;!=&amp;nbsp;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;FreeDrag(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;,&amp;nbsp;e);&amp;nbsp;}&amp;nbsp;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&amp;nbsp;GestureType.DragComplete:&amp;nbsp;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&amp;nbsp;(DragComplete&amp;nbsp;!=&amp;nbsp;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;DragComplete(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;,&amp;nbsp;e);&amp;nbsp;}&amp;nbsp;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&amp;nbsp;GestureType.Flick:&amp;nbsp;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&amp;nbsp;(Flick&amp;nbsp;!=&amp;nbsp;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;Flick(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;,&amp;nbsp;e);&amp;nbsp;}&amp;nbsp;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&amp;nbsp;GestureType.Pinch:&amp;nbsp;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&amp;nbsp;(Pinch&amp;nbsp;!=&amp;nbsp;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;Pinch(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;,&amp;nbsp;e);&amp;nbsp;}&amp;nbsp;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt;&amp;nbsp;GestureType.PinchComplete:&amp;nbsp;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&amp;nbsp;(PinchComplete&amp;nbsp;!=&amp;nbsp;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;PinchComplete(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;,&amp;nbsp;e);&amp;nbsp;}&amp;nbsp;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;#endregion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28pt; line-height: 150%; mso-char-indent-count: 2.0"&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28pt; line-height: 150%; mso-char-indent-count: 2.0"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;最后经过反复的对比测试，得出以下结论：&lt;span lang="EN-US"&gt;Silverlight&lt;/span&gt;模式在触控方面对比&lt;span lang="EN-US"&gt;XNA&lt;/span&gt;最大优势在于：&lt;span lang="EN-US"&gt;&lt;a href="http://msdn.microsoft.com/zh-cn/magazine/gg650664.aspx" target="_blank"&gt;Silverlight&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;的触&lt;span lang="EN-US"&gt;控&lt;span lang="EN-US"&gt;是基于事件驱动的(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;触发式)&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;，&lt;span lang="EN-US"&gt;是&lt;span lang="EN-US"&gt;同步的&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;。&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;显而易见，针对低级触控操作，&lt;span lang="EN-US"&gt;Silverlight&lt;/span&gt;模式性能更高；相对于具体控件，&lt;span lang="EN-US"&gt;Silverlight&lt;/span&gt;触控事件效率更高，使用更方便；总体来说，不论是精确度、灵活度还是开发效率和维护效率，&lt;span lang="EN-US"&gt;Silverlight&lt;/span&gt;触控模式都明显优于&lt;span lang="EN-US"&gt;XNA&lt;/span&gt;模式。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; line-height: 150%"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;因此，这也是为什么微软会在&lt;span lang="EN-US"&gt;WP7.1&lt;/span&gt;开始重点推出&lt;span lang="EN-US"&gt;SL.XNA&lt;/span&gt;模式的主要原因了：&lt;span lang="EN-US"&gt;SL&lt;/span&gt;负责游戏的&lt;span lang="EN-US"&gt;UI&lt;/span&gt;部分，而&lt;span lang="EN-US"&gt;XNA&lt;/span&gt;则负责绘制游戏对象，分工明确，效率与性能兼具。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; line-height: 150%"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;为了精确论证以上观点的完美可执行性，我特意编写了一个&lt;span lang="EN-US"&gt;SL&lt;/span&gt;控件与&lt;span lang="EN-US"&gt;XNA&lt;/span&gt;精灵交互的&lt;span lang="EN-US"&gt;Demo&lt;/span&gt;：&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&lt;img height="693" alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120411/2.jpg" width="975" border="0" longdesc="" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; line-height: 150%"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;如上图，不仅有&lt;span lang="EN-US"&gt;2D&lt;/span&gt;精灵，也有&lt;span lang="EN-US"&gt;3D&lt;/span&gt;骨骼动画模型；有&lt;span lang="EN-US"&gt;Silverlight&lt;/span&gt;按钮&lt;span lang="EN-US"&gt;(UI)&lt;/span&gt;，也有&lt;span lang="EN-US"&gt;XNA&lt;/span&gt;按钮&lt;span lang="EN-US"&gt;(UI)&lt;/span&gt;；所有对象均同屏显示，且可相互操作&lt;span lang="EN-US"&gt;(&lt;/span&gt;封装了一个名为&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; color: #2b91af; line-height: 150%; font-family: NSimSun; mso-font-kerning: 0pt; mso-bidi-font-family: NSimSun"&gt;UIHandler&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;的&lt;span lang="EN-US"&gt;UI&lt;/span&gt;管理类，详见本文结尾处源码&lt;span lang="EN-US"&gt;)&lt;/span&gt;。以最左边&amp;#8220;&lt;span lang="EN-US"&gt;SL&lt;/span&gt;控件&lt;span lang="EN-US"&gt;+XNA 2D&lt;/span&gt;精灵&amp;#8221;的&amp;#8220;转向&amp;#8221;交互为例，首先我们赋予&lt;span lang="EN-US"&gt;XNA&lt;/span&gt;精灵一个&lt;span lang="EN-US"&gt;Direction&lt;/span&gt;属性：&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;获取或设置朝向&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;virtual&lt;/span&gt;&amp;nbsp;Directions&amp;nbsp;Direction&amp;nbsp;{&amp;nbsp;&lt;span style="color: #0000ff"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="color: #0000ff"&gt;set&lt;/span&gt;;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; line-height: 150%"&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; line-height: 150%"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;当点击&amp;#8220;转向&amp;#8221;&lt;span lang="EN-US"&gt;Button&lt;/span&gt;时，触发&lt;span lang="EN-US"&gt;Click&lt;/span&gt;事件修改该精灵的&lt;span lang="EN-US"&gt;Direction&lt;/span&gt;属性：&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;button.Click&amp;nbsp;+=&amp;nbsp;&lt;span style="color: #0000ff"&gt;delegate&lt;/span&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&amp;nbsp;direction&amp;nbsp;=&amp;nbsp;(&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;)role1.Direction&amp;nbsp;+&amp;nbsp;&lt;span style="color: #800080"&gt;1&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;role1.Direction&amp;nbsp;=&amp;nbsp;direction&amp;nbsp;&amp;gt;&amp;nbsp;&lt;span style="color: #800080"&gt;3&lt;/span&gt;&amp;nbsp;?&amp;nbsp;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&amp;nbsp;:&amp;nbsp;(Directions)direction;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;/div&gt;&lt;/div&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; line-height: 150%"&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; line-height: 150%"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;同时，该精灵的&lt;span lang="EN-US"&gt;Direction&lt;/span&gt;属性新值重新反馈给&lt;span lang="EN-US"&gt;Silverlight&lt;/span&gt;的&lt;span lang="EN-US"&gt;TextBlock&lt;/span&gt;控件并显示出来&lt;span lang="EN-US"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&amp;nbsp;textBlock.Text&amp;nbsp;=&amp;nbsp;((Directions)role1.Direction).ToString();&lt;/div&gt;&lt;/div&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28pt; line-height: 150%; text-align: left; mso-layout-grid-align: none; mso-char-indent-count: 2.0" align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28pt; line-height: 150%; text-align: left; mso-layout-grid-align: none; mso-char-indent-count: 2.0" align="left"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;由此便完成了&lt;span lang="EN-US"&gt;SL -&amp;gt; XNA &amp;#8211;&amp;gt; SL&lt;/span&gt;这样一个双向交互的演示。从该案例中大家是否体会到了&lt;span lang="EN-US"&gt;Silvelight UI&lt;/span&gt;和&lt;span lang="EN-US"&gt;XNA Sprite&lt;/span&gt;之间的亲密无间？当然了，&lt;span lang="EN-US"&gt;SL&lt;/span&gt;与&lt;span lang="EN-US"&gt;XNA 3D&lt;/span&gt;对象的交互也同样方便快捷（详见源码），不过需要注意一点，在绘制模型代码段中必须加入以下三句话方能正常显示&lt;span lang="EN-US"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;否则会出现因与&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;SpriteBatch&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;混合作用而导致的贴图呈现部分透明状态&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;)&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;：&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;呈现模型蒙皮网格&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt;&amp;nbsp;(ModelMesh&amp;nbsp;mesh&amp;nbsp;&lt;span style="color: #0000ff"&gt;in&lt;/span&gt;&amp;nbsp;currentModel.Meshes)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt;&amp;nbsp;(SkinnedEffect&amp;nbsp;effect&amp;nbsp;&lt;span style="color: #0000ff"&gt;in&lt;/span&gt;&amp;nbsp;mesh.Effects)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;......&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; effect.GraphicsDevice.BlendState&amp;nbsp;=&amp;nbsp;BlendState.AlphaBlend;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;effect.GraphicsDevice.DepthStencilState&amp;nbsp;=&amp;nbsp;DepthStencilState.Default;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;effect.GraphicsDevice.SamplerStates[&lt;span style="color: #800080"&gt;0&lt;/span&gt;]&amp;nbsp;=&amp;nbsp;SamplerState.PointClamp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ......&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;/div&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28pt; line-height: 150%; text-align: left; mso-layout-grid-align: none; mso-char-indent-count: 2.0" align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28pt; line-height: 150%; text-align: left; mso-layout-grid-align: none; mso-char-indent-count: 2.0" align="left"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;至于纯&lt;span lang="EN-US"&gt;XNA&lt;/span&gt;界面与&lt;span lang="EN-US"&gt;XNA&lt;/span&gt;精灵的交互例子我就不再多说了，开发过&lt;span lang="EN-US"&gt;XNA&lt;/span&gt;的朋友都清楚，需要将&lt;span lang="EN-US"&gt;UI&lt;/span&gt;绘制出来后时时判断触控点与各&lt;span lang="EN-US"&gt;UI&lt;/span&gt;间的位置关系最终做出判断，代码量大，编码繁琐；总之&lt;span lang="EN-US"&gt;XNA&lt;/span&gt;做&lt;span lang="EN-US"&gt;UI&lt;/span&gt;吃力不讨好，巨蛋痛，真的。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28pt; line-height: 150%; text-align: left; mso-layout-grid-align: none; mso-char-indent-count: 2.0" align="left"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;结尾，我认为很有必要提醒大家一下关于游戏开发中使用非常广泛的&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; color: #2b91af; line-height: 150%; font-family: NSimSun; mso-font-kerning: 0pt; mso-bidi-font-family: NSimSun"&gt;Point&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;结构体和&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; color: #2b91af; line-height: 150%; font-family: NSimSun; mso-font-kerning: 0pt; mso-bidi-font-family: NSimSun"&gt;Math&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;数学库。&lt;span lang="EN-US"&gt;WPF/Silverlight/XNA&lt;/span&gt;中的&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; color: #2b91af; line-height: 150%; font-family: NSimSun; mso-font-kerning: 0pt; mso-bidi-font-family: NSimSun"&gt;Point&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;设计各不相同，移植时需特别注意；&lt;span lang="EN-US"&gt;System.&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; color: #2b91af; line-height: 150%; font-family: NSimSun; mso-font-kerning: 0pt; mso-bidi-font-family: NSimSun"&gt;Math&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;和&lt;span lang="EN-US"&gt;Microsoft.Xna.Framework.&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; color: #2b91af; line-height: 150%; font-family: NSimSun; mso-font-kerning: 0pt; mso-bidi-font-family: NSimSun"&gt;MathHelper&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;针对的领域各不相同，前者在三角函数方面更全面&lt;span lang="EN-US"&gt;(double)&lt;/span&gt;，如正弦、余弦、正切、余切等；而后者则主要针对&lt;span lang="EN-US"&gt;float&lt;/span&gt;类型的计算，比如弧度和角度之间的换算等常用的静态方法。&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; color: #2b91af; line-height: 150%; font-family: NSimSun; mso-font-kerning: 0pt; mso-bidi-font-family: NSimSun"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%; text-align: left; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;OK&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;，至此我们摸透了&lt;span lang="EN-US"&gt;SL.XNA&lt;/span&gt;中各元素的操控原理与实现，下一节我将对第&lt;span lang="EN-US"&gt;5&lt;/span&gt;节的&lt;span lang="EN-US"&gt;Demo&lt;/span&gt;进行移植，进而向大家展示该框架强而有力的实用性，敬请关注。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="background: white; margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;span style="font-size: 14pt; color: #232323; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;本节源码下载地址：&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; color: #232323; line-height: 150%"&gt;&lt;a href="http://files.cnblogs.com/alamiye010/SLXnaGame2.zip" target="_blank"&gt;&lt;span style="color: #1848b9; text-decoration: none; text-underline: none"&gt;&lt;font face="Times New Roman"&gt;SLXnaGame2.zip&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 10pt; color: #232323; line-height: 150%"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; color: #232323; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;手记小结：&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;SL.XNA&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;模式乃集大成者，无论开发&lt;span lang="EN-US"&gt;2D&lt;/span&gt;或是&lt;span lang="EN-US"&gt;3D&lt;/span&gt;游戏，&lt;span lang="EN-US"&gt;Silverlight&lt;/span&gt;负责制作&lt;span lang="EN-US"&gt;UI&lt;/span&gt;高效且便捷，&lt;span lang="EN-US"&gt;XNA&lt;/span&gt;则专业绘制高性能精灵与模型，分工明确，结构合理，互利互补。掌握好&lt;span lang="EN-US"&gt;SL.XNA&lt;/span&gt;开发模式，深刻透析游戏结构布局，分工合作处理好游戏各环节逻辑关系，游戏整体&amp;#8220;效率&amp;#8221;与&amp;#8220;性能&amp;#8221;必将最大化。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;推荐参考：&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&lt;a href="http://cnblogs.com/nowpaper" target="_blank"&gt;&lt;font face="Times New Roman" color="#0000ff"&gt;Nowpaper&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;和&lt;span lang="EN-US"&gt;&lt;a href="http://www.cnblogs.com/wangergo" target="_blank"&gt;&lt;font face="Times New Roman" color="#0000ff"&gt;Williams&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;关于&lt;span lang="EN-US"&gt;Windows Phone&lt;/span&gt;的游戏开发博客。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/alamiye010/aggbug/2442058.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/alamiye010/archive/2012/04/11/2442058.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/alamiye010/archive/2012/03/29/2423524.html</id><title type="text">Silverlight游戏研发手记：(六)向Windows Phone移植之框架构建</title><summary type="text">通过Silverlight(Blend)制作游戏界面，XNA实现游戏对象的绘制，双管齐下。开发者不仅能够延续传统.NET基于事件驱动的低耦合编程模式，同时也能享受到XNA高性能的图形绘制与渲染；正如MSDN所述，Silverlight与XNA的完美结合带来的是开发“效率”与“性能”质的飞跃。</summary><published>2012-03-29T08:00:00Z</published><updated>2012-03-29T08:00:00Z</updated><author><name>深蓝色右手</name><uri>http://www.cnblogs.com/alamiye010/</uri></author><link rel="alternate" href="http://www.cnblogs.com/alamiye010/archive/2012/03/29/2423524.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/alamiye010/archive/2012/03/29/2423524.html"/><content type="html">&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; text-align: left; mso-layout-grid-align: none" align="left"&gt;&lt;span&gt;&lt;v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"&gt;&lt;v:stroke joinstyle="miter"&gt;&lt;/v:stroke&gt;&lt;v:formulas&gt;&lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @0 1 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum 0 0 @1"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @2 1 2"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @3 21600 pixelWidth"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @3 21600 pixelHeight"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @0 0 1"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @6 1 2"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @7 21600 pixelWidth"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @8 21600 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @7 21600 pixelHeight"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @10 21600 0"&gt;&lt;/v:f&gt;&lt;/v:formulas&gt;&lt;v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"&gt;&lt;/v:path&gt;&lt;o:lock aspectratio="t" v:ext="edit"&gt;&lt;/o:lock&gt;&lt;/v:shapetype&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;海量的美术、庞大而繁杂的人员与资源配备使得网游和端游开发难度系数高居不下；移动开发时代的来临为游戏设计师们提供了第三条绿色通道，这是一次愈加趋近梦想的迅捷契机。&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;作为一个专情的人，深爱着C#，毋庸置疑的原因；于是，我也爱上了Windows Phone，爱上了C#在Silverlight.XNA中放荡的游走；因为它的存，使得代码移植在页游、端游与手游之间显得格外畅快淋漓。&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;今天，打开的不仅是一扇门，更是通往美丽新世界的崭新道路；握紧了，战士，你手中无比锋利的C#，鞭笞吧！XAML，神秘的游戏世界正等待您来探索。&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;轻轻的，我步入了这个陌生而又激动的新圣域，困惑悄然而生：该如何开启Windows Phone游戏开发这个潘多拉之盒？&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;Sprite&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;，精灵，永恒不变的游戏灵魂铸就者，生命万象之密匙；从精灵的起源去探究创世之初尤能缅怀我的虔诚。&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;翻开上帝之书MSDN，古老的文字向人类印示着Windows Phone游戏精灵的两种主要创生方式：Silverlight的UElement(所有UI控件的基类)和XNA中的Texture2D(2D纹理)。性能方面，后者绝对专业；不过相对于效率而言，前者则更为出色。彷徨中的我恍然大悟，其实一切真想早已被远古神器Visual Studio 2010暴露得一览无余，抹去岁月的尘土，赫然印着：基于Silverlight与XNA的无缝集成打造最完美之解决方案：&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; text-align: left; mso-layout-grid-align: none" align="left"&gt;&lt;img height="233" alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120329/0.png" width="905" border="0" longdesc="" /&gt;&lt;span lang="EN-US" style="font-size: 14pt; font-family: 宋体"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 27.45pt; line-height: 150%; mso-char-indent-count: 1.96"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;通过&lt;span lang="EN-US"&gt;Silverlight(Blend)&lt;/span&gt;制作游戏界面，&lt;span lang="EN-US"&gt;XNA&lt;/span&gt;实现游戏对象的绘制，双管齐下。开发者不仅能够延续传统&lt;span lang="EN-US"&gt;.NET&lt;/span&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="color: maroon"&gt;基于事件驱动的低耦合编程模式&lt;/span&gt;&lt;/strong&gt;，同时也能享受到&lt;span lang="EN-US"&gt;XNA&lt;/span&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="color: maroon"&gt;高性能的图形绘制与渲染&lt;/span&gt;&lt;/strong&gt;；正如&lt;span lang="EN-US"&gt;MSDN&lt;/span&gt;所述，&lt;span lang="EN-US"&gt;&lt;a href="http://msdn.microsoft.com/zh-cn/library/ff402528(v=vs.92).aspx" target="_blank"&gt;&lt;font color="#0000ff"&gt;&lt;font face="Times New Roman"&gt;Silverlight&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;与XNA&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;的完美&lt;span lang="EN-US"&gt;结合&lt;span lang="EN-US"&gt;带来&lt;span lang="EN-US"&gt;的是&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;开发&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;&amp;#8220;效率&amp;#8221;与&amp;#8220;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;性能&amp;#8221;质的飞跃&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;：&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120329/1.jpg" border="0" longdesc="" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; line-height: 150%"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;由此我们也不难看出，目前的&lt;span lang="EN-US"&gt;Silverlight&lt;/span&gt;不论是作为浏览器插件，还是&lt;span lang="EN-US"&gt;Windows Phone&lt;/span&gt;的主要开发工具，其与&lt;span lang="EN-US"&gt;XNA&lt;/span&gt;融合构建&lt;span lang="EN-US"&gt;.NET&lt;/span&gt;开发者最熟悉的事件驱动架构已成为主流趋势；本节作为系列&lt;span lang="EN-US"&gt;Demo&lt;/span&gt;向&lt;span lang="EN-US"&gt;Windows Phone&lt;/span&gt;平台移植的第一步，我将向大家详细讲解如何搭建游戏的主体框架。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;一）配置开发环境&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28pt; line-height: 150%; mso-char-indent-count: 2.0"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&lt;a href="http://www.cnblogs.com/gnielee/archive/2011/09/29/windows-phone-sdk-7-1-release.html" target="_blank"&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman" color="#0000ff"&gt;安装Windows Phone SDK 7.1&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;二）新建游戏项目&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28pt; line-height: 150%; mso-char-indent-count: 2.0"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;打开&lt;span lang="EN-US"&gt;Visual Studio&lt;/span&gt;，点击文件&lt;span lang="EN-US"&gt;-&amp;gt;&lt;/span&gt;新建&lt;span lang="EN-US"&gt;-&amp;gt;&lt;/span&gt;项目&lt;span lang="EN-US"&gt;-&amp;gt;&lt;/span&gt;选择模板&lt;span lang="EN-US"&gt; Silverlight for Windows Phone&lt;/span&gt;中的&amp;#8220;&lt;span lang="EN-US"&gt;Windows Phone Silverlight&lt;/span&gt;和&lt;span lang="EN-US"&gt;XNA&lt;/span&gt;应用程序&amp;#8221;，这里我取名叫&lt;span lang="EN-US"&gt;SLXnaGame&lt;/span&gt;：&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120329/2.png" border="0" longdesc="" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;三）分析解决方案&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;span lang="EN-US"&gt;&lt;img height="361" alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120329/3.jpg" width="439" border="0" longdesc="" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; line-height: 150%"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;在解决方案管理器&lt;span lang="EN-US"&gt;SLXnaGame&lt;/span&gt;项目中第一眼看到&lt;span lang="EN-US"&gt;.xaml&lt;/span&gt;顿时泪流满面，无比熟悉的&lt;span lang="EN-US"&gt;&lt;a href="http://www.cnblogs.com/Mainz/archive/2011/02/23/1962046.html" target="_blank"&gt;&lt;font face="Times New Roman" color="#0000ff"&gt;App.xaml&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;以及主页面&lt;span lang="EN-US"&gt;MainPage.xaml&lt;/span&gt;和游戏场景页面&lt;span lang="EN-US"&gt;GamePage.xaml&lt;/span&gt;让所有&lt;span lang="EN-US"&gt;Silverlight&lt;/span&gt;游戏开发者倍感亲切：&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120329/4.png" border="0" longdesc="" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;四）核心框架搭建&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; line-height: 150%"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;新项目默认为我们打开了&lt;span lang="EN-US"&gt;MainPage.xaml&lt;/span&gt;的前端部分，除了左边垂直摆放着一个偌大的&lt;span lang="EN-US"&gt;Windows Phone&lt;/span&gt;模型外，右边那一长串的&lt;span lang="EN-US"&gt;xaml&lt;/span&gt;再熟悉不过了。由于&lt;span lang="EN-US"&gt;SLG&lt;/span&gt;游戏以水平方向呈现效果更好，因此我们不妨对这个所见即所得的展示窗口进行一些调整，并以一张很炫的图片作为游戏的封面：&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120329/5.jpg" border="0" longdesc="" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; text-align: left; mso-layout-grid-align: none" align="left"&gt;&lt;span style="font-size: 14pt; font-family: 宋体"&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; font-family: 宋体"&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; font-family: 宋体"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;如上图，xaml代码中我们可以通过&lt;/span&gt;&lt;span style="font-size: 14pt; color: red; line-height: 150%; font-family: NSimSun"&gt;SupportedOrientations&lt;/span&gt;&lt;span style="font-size: 14pt; color: blue; line-height: 150%; font-family: NSimSun"&gt;="Landscape"&lt;/span&gt;&lt;span style="font-size: 14pt; color: red; line-height: 150%; font-family: NSimSun"&gt; Orientation&lt;/span&gt;&lt;span style="font-size: 14pt; color: blue; line-height: 150%; font-family: NSimSun"&gt;="LandscapeLeft" &lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;设置Windows Phone模拟器横向显示；当然，如果不需要观看预览(比如后面讲到的GamePage)，我们也可以在后台cs文件中编写&lt;/span&gt;&lt;span style="font-size: 14pt; color: blue; line-height: 150%; font-family: NSimSun"&gt;this&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: NSimSun"&gt;.SupportedOrientations = &lt;span style="color: #2b91af"&gt;SupportedPageOrientation&lt;/span&gt;.Landscape; &lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;实现同样的效果。另外，游戏中所有Silverlight控件所用到的图片资源均统一存放在SLXnaGame项目的(新建)Resource文件夹中，这样我们便可通过如下xaml代码实现图片装载：&lt;/span&gt;&lt;span style="font-size: 14pt; color: red; line-height: 150%; font-family: NSimSun"&gt;Source&lt;/span&gt;&lt;span style="font-size: 14pt; color: blue; line-height: 150%; font-family: NSimSun"&gt;="/SLXnaGame;component/Resource/UI/FrontPage.jpg"&lt;/span&gt; &lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;除此之外，为了构建更为灵活的游戏框架，同样可以仿造之前&lt;a href="http://www.cnblogs.com/alamiye010/archive/2011/04/02/2003182.html" target="_blank"&gt;Silverlight游戏教程&lt;/a&gt;的做法，编写一个名为Global.cs的全局辅助类存放于SLXnaGameLib(控件类库)项目中：&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;" onclick="cnblogs_code_show('0425d04b-f237-4b4f-88cf-d5bf15a2948e')"&gt;&lt;img class="code_img_closed" id="code_img_closed_0425d04b-f237-4b4f-88cf-d5bf15a2948e" alt="" src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" /&gt;&lt;img class="code_img_opened" id="code_img_opened_0425d04b-f237-4b4f-88cf-d5bf15a2948e" style="display: none" onclick="cnblogs_code_hide('0425d04b-f237-4b4f-88cf-d5bf15a2948e',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt; &lt;div class="cnblogs_code_hide" id="cnblogs_code_open_0425d04b-f237-4b4f-88cf-d5bf15a2948e"&gt;&lt;div&gt;&lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt;&amp;nbsp;SlXnaDemoLib&amp;nbsp;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;全局(数据和方法)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&amp;nbsp;Global&amp;nbsp;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;主项目名&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;ProjectName&amp;nbsp;=&amp;nbsp;Application.Current.GetType().Assembly.FullName.Split(&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #800000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;)[&lt;span style="color: #800080"&gt;0&lt;/span&gt;];&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;项目Resource资源路径&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;ProjectPath(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;uri)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;.Format(&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;/{0};component/Resource/{1}&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;,&amp;nbsp;ProjectName,&amp;nbsp;uri);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;获取项目Resource中的位图&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="uri"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;路径&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&amp;nbsp;BitmapImage&amp;nbsp;GetImage(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;uri)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;BitmapImage(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;Uri(ProjectPath(uri),&amp;nbsp;UriKind.Relative));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; text-align: left; mso-layout-grid-align: none" align="left"&gt;&amp;nbsp;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;注意，这里需要添加对System.Windows.dll动态链接库的引用：右键点击SLXnaGameLib项目中的引用-&amp;gt;添加引用-&amp;gt;选择System.Windows&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; text-align: left; mso-layout-grid-align: none" align="left"&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; text-align: left; mso-layout-grid-align: none" align="left"&gt;&lt;span style="font-size: 14pt; font-family: 宋体"&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&lt;/span&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; line-height: 150%; text-align: left; mso-layout-grid-align: none" align="left"&gt;&lt;img height="576" alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120329/6.gif" width="865" border="0" longdesc="" /&gt;&lt;span lang="EN-US" style="font-size: 14pt; font-family: 宋体"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; font-family: 宋体"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt; font-family: 宋体"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 到此为止，游戏初始界面制作完毕，按F5调试运行；正常情况下我们将看到前面精心设计好的游戏初始画面，此时细心的朋友肯定会注意到一个特殊的警告提示：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; line-height: 150%; text-align: left; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US" style="font-size: 14pt; font-family: 宋体"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120329/7.jpg" border="0" longdesc="" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US" style="font-size: 14pt; font-family: 宋体"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 由于Silverlight与XNA的兼容模式是从7.1开始才有的新模板，其本质由7.0衍生而来。编译后会发现警告提示&amp;#8220;无法引用项目&amp;#8216;SLXnaGameLib&amp;#8217;&amp;#8221;，但实际上SLXnaGame项目还是能够使用的，如果出现由于兼容问题导致可能出现的无法找到命名空间或类名，可删除对这个SLXnaGameLib的引用后重新再引用一次即可永久解决问题。此处稍作说明提醒大家无需紧张，框架之间的协调问题在后续版本中将进一步完善。&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;回到正题，接下来我们点击&amp;#8220;点击开始&amp;#8221;这个闪烁的按钮便会跳转到项目默认自带的第二个页面：GamePage.xaml。对于新手来说，MainPage.xaml是如何通过点击Button实现跳转的呢？机关就在MainPage.xaml左边的小箭头上：&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none" align="left"&gt;&lt;span style="font-size: 14pt; font-family: 宋体"&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;img height="64" alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120329/8.png" width="221" border="0" longdesc="" /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; font-family: 宋体"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none" align="left"&gt;&lt;span style="font-size: 14pt; font-family: 宋体"&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28pt; line-height: 150%; text-align: left; mso-layout-grid-align: none; mso-char-indent-count: 2.0" align="left"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;熟悉&lt;span lang="EN-US"&gt;Silverlight&lt;/span&gt;的朋友都清楚，&lt;span lang="EN-US"&gt;Silverlight&lt;/span&gt;中的用户控件&lt;span lang="EN-US"&gt;(&lt;/span&gt;页面&lt;span lang="EN-US"&gt;)&lt;/span&gt;都是以两个文件&lt;span lang="EN-US"&gt;partial&lt;/span&gt;的形式存在：前台&lt;span lang="EN-US"&gt;(.xaml)&lt;/span&gt;和后台&lt;span lang="EN-US"&gt;(.cs)&lt;/span&gt;。常规的做法是通过在前台注册&lt;span lang="EN-US"&gt;Button&lt;/span&gt;的&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; color: red; line-height: 150%; font-family: NSimSun; mso-font-kerning: 0pt; mso-bidi-font-family: NSimSun"&gt;Click&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; color: blue; line-height: 150%; font-family: NSimSun; mso-font-kerning: 0pt; mso-bidi-font-family: NSimSun"&gt;="Button_Click"&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;事件，并于后台编写相应代码实现页面之间的点击跳转功能。&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;简单的按钮单击事件处理程序可使我们转至第二页&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;Button_Click(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&amp;nbsp;sender,&amp;nbsp;RoutedEventArgs&amp;nbsp;e)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NavigationService.Navigate(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;Uri(&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;/GamePage.xaml&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;,&amp;nbsp;UriKind.Relative));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; line-height: 150%"&gt;&amp;nbsp;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;接下来我们将目标转向第二个页面，首先打开&lt;span lang="EN-US"&gt;GamePage.xaml&lt;/span&gt;，赫然写着&amp;#8220;不需要&lt;span lang="EN-US"&gt;XAML&lt;/span&gt;内容&lt;span lang="EN-US"&gt;&amp;#8230;&amp;#8230;&amp;#8221;&lt;/span&gt;，其实我想说：&lt;span lang="EN-US"&gt;&amp;#8230;&lt;/span&gt;哥还是留个&lt;span lang="EN-US"&gt;Canvas&lt;/span&gt;吧，哈哈。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&lt;img height="97" alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120329/9.jpg" width="493" border="0" longdesc="" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; line-height: 150%"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;继续打开&lt;span lang="EN-US"&gt;GamePage.cs&lt;/span&gt;，终于来到了我们游戏框架的核心部分。默认的代码有些凌乱，稍做调整后我们不妨先对比一下它与标准的&lt;span lang="EN-US"&gt;XNA&lt;/span&gt;游戏中的&lt;span lang="EN-US"&gt;Game1.cs&lt;/span&gt;有什么区别：&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120329/10.jpg" border="0" longdesc="" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; line-height: 150%"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;做过&lt;span lang="EN-US"&gt;XNA&lt;/span&gt;开发的朋友是否有种豁然开朗的感觉&lt;span lang="EN-US"&gt; (&lt;/span&gt;新手朋友们可以参考一下&lt;span lang="EN-US"&gt;&lt;a href="http://www.cnblogs.com/zhuweisky/archive/2009/03/04/1403298.html" target="_blank"&gt;&lt;font color="#0000ff"&gt;&lt;font face="Times New Roman"&gt;XNA&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;的游戏开发机制&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;)。&lt;/span&gt;把&lt;span lang="EN-US"&gt;Silverlight.XNA&lt;/span&gt;（以下简称&lt;span lang="EN-US"&gt;SL.XNA&lt;/span&gt;）中的&lt;span lang="EN-US"&gt;OnNavigatedTo()&lt;/span&gt;和&lt;span lang="EN-US"&gt;OnNavigatedFrom()&lt;/span&gt;分别看做是纯&lt;span lang="EN-US"&gt;XNA&lt;/span&gt;中的&lt;span lang="EN-US"&gt;LoadContent()&lt;/span&gt;和&lt;span lang="EN-US"&gt;UnloadContent()&lt;/span&gt;，两者相似度几乎一模一样，只是&lt;span lang="EN-US"&gt;SL.XNA&lt;/span&gt;模式通过一个&lt;span lang="EN-US"&gt;timer&lt;/span&gt;实现了游戏的主循环；注意了，这个&lt;span lang="EN-US"&gt;timer&lt;/span&gt;可是&lt;span lang="EN-US"&gt;XNA&lt;/span&gt;线程框架中的&lt;span lang="EN-US"&gt;GameTimer&lt;/span&gt;，因此我们无需担忧其性能方面的问题：&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&lt;img height="67" alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120329/11.png" width="314" border="0" longdesc="" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; text-align: left; mso-layout-grid-align: none" align="left"&gt;&lt;span style="font-size: 14pt; font-family: 宋体"&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; font-family: 宋体"&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; font-family: 宋体"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; line-height: 150%; text-align: left; mso-layout-grid-align: none" align="left"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;至于绘图方面，&lt;span lang="EN-US"&gt;SL.XNA&lt;/span&gt;和纯&lt;span lang="EN-US"&gt;XNA&lt;/span&gt;在代码方面几乎是无缝移植。比如我们希望绘制字体，完全可以一字不差的照搬现有的&lt;span lang="EN-US"&gt;&lt;a href="http://www.cnblogs.com/aawolf/archive/2010/09/22/1833167.html" target="_blank"&gt;&lt;font face="Times New Roman"&gt;XNA&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;教程中的&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;字体&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;示例&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;；而音乐和音效的播放则同样，将&lt;span lang="EN-US"&gt;mp3&lt;/span&gt;或&lt;span lang="EN-US"&gt;wav&lt;/span&gt;等音频资源加入到&lt;span lang="EN-US"&gt;SLXnaGameLibContent&lt;/span&gt;资源项目中，然后编写一样的代码实现一模一样的功能&lt;span lang="EN-US"&gt;(&lt;/span&gt;注意，&lt;span lang="EN-US"&gt;mp3&lt;/span&gt;和&lt;span lang="EN-US"&gt;wav&lt;/span&gt;的资源存放形式不同，播放方式亦不同&lt;span lang="EN-US"&gt;)&lt;/span&gt;：&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;" onclick="cnblogs_code_show('a3eb9e36-08d5-418a-bfa9-90b324cc2e64')"&gt;&lt;img class="code_img_closed" id="code_img_closed_a3eb9e36-08d5-418a-bfa9-90b324cc2e64" alt="" src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" /&gt;&lt;img class="code_img_opened" id="code_img_opened_a3eb9e36-08d5-418a-bfa9-90b324cc2e64" style="display: none" onclick="cnblogs_code_hide('a3eb9e36-08d5-418a-bfa9-90b324cc2e64',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt; &lt;div class="cnblogs_code_hide" id="cnblogs_code_open_a3eb9e36-08d5-418a-bfa9-90b324cc2e64"&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SoundEffect&amp;nbsp;sound;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Song&amp;nbsp;song;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;构造函数&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;MainPage()&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;InitializeComponent();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Loaded&amp;nbsp;+=&amp;nbsp;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;RoutedEventHandler(MainPage_Loaded);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;MainPage_Loaded(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&amp;nbsp;sender,&amp;nbsp;EventArgs&amp;nbsp;e)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;content&amp;nbsp;=&amp;nbsp;(Application.Current&amp;nbsp;&lt;span style="color: #0000ff"&gt;as&lt;/span&gt;&amp;nbsp;App).Content;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;song&amp;nbsp;=&amp;nbsp;content.Load&amp;lt;Song&amp;gt;(&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Media/MySong&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MediaPlayer.Play(song);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;简单的按钮单击事件处理程序可使我们转至第二页&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;Button_Click(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&amp;nbsp;sender,&amp;nbsp;RoutedEventArgs&amp;nbsp;e)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sound&amp;nbsp;=&amp;nbsp;content.Load&amp;lt;SoundEffect&amp;gt;(&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Audio/MyAudio&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sound.Play();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NavigationService.Navigate(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;Uri(&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;/GamePage.xaml&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;,&amp;nbsp;UriKind.Relative));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; text-align: left; mso-layout-grid-align: none" align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US" style="font-size: 14pt; font-family: 宋体"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US" style="font-size: 14pt; font-family: 宋体"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120329/12.jpg" border="0" longdesc="" /&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; font-family: 宋体"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;到此有朋友要问了：仅仅是调用了XNA中的字体和音乐，与纯XNA又有何区别？Silverlight控件呈现问题甚至还不需要字体呢，干嘛非得多次一举给XNA加个Silverlight壳？&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;别急，接下来便是Silverlight与XNA交互实现的关键：&lt;/span&gt;&lt;span style="font-size: 14pt; color: #2b91af; line-height: 150%; font-family: NSimSun"&gt;UIElementRenderer&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;就像本文开头所述那样，完美的交互必须是Silverlight的UElement和XNA的Texture2D之间的非跨线程交互操作，大家不妨先看看最终的实现代码：&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UIElementRenderer&amp;nbsp;elementRenderer;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;GamePage()&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;InitializeComponent();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.SupportedOrientations&amp;nbsp;=&amp;nbsp;SupportedPageOrientation.Landscape;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.LayoutUpdated&amp;nbsp;+=&amp;nbsp;GamePage_LayoutUpdated;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;....&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;允许页面绘制自身。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;Draw(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&amp;nbsp;sender,&amp;nbsp;GameTimerEventArgs&amp;nbsp;e)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;graphicsDevice.Clear(Color.CornflowerBlue);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;elementRenderer.Render();&amp;nbsp;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;通过elementRenderer呈现Silverlight中的UElement&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;spriteBatch.Begin();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;spriteBatch.Draw(elementRenderer.Texture,&amp;nbsp;Vector2.Zero,&amp;nbsp;Color.White);&amp;nbsp;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;通过XNA的形式将elementRenderer整体绘制出来&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;spriteBatch.End();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;创建一个可以被XNA绘制的Silverlight-UI展示器UIElementRenderer&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;GamePage_LayoutUpdated(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&amp;nbsp;sender,&amp;nbsp;EventArgs&amp;nbsp;e)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&amp;nbsp;(ActualWidth&amp;nbsp;&amp;gt;&amp;nbsp;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;ActualHeight&amp;nbsp;&amp;gt;&amp;nbsp;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;elementRenderer&amp;nbsp;==&amp;nbsp;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;elementRenderer&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;UIElementRenderer(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;,&amp;nbsp;(&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;)ActualWidth,&amp;nbsp;(&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;)ActualHeight);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; line-height: 150%"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;其实，&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; color: #2b91af; line-height: 150%; font-family: NSimSun; mso-font-kerning: 0pt; mso-bidi-font-family: NSimSun"&gt;&lt;a href="http://www.cnblogs.com/aawolf/archive/2011/06/17/2083222.html" target="_blank"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-bidi-font-family: NSimSun"&gt;&lt;font face="Times New Roman"&gt;UIElementRenderer&lt;/font&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: 宋体; mso-font-kerning: 1.0pt"&gt;&lt;span lang="EN-US"&gt;的原理&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;便是将&lt;span lang="EN-US"&gt;Silverlight&lt;/span&gt;中的&lt;span lang="EN-US"&gt;UElement&lt;/span&gt;对象以&lt;span lang="EN-US"&gt;XNA&lt;/span&gt;的绘制形式在&lt;span lang="EN-US"&gt;Draw()&lt;/span&gt;方法中画出来，真想大白：不论是&lt;span lang="EN-US"&gt;Silverlight&lt;/span&gt;的东西还是&lt;span lang="EN-US"&gt;XNA&lt;/span&gt;的东西，所有能看得到的对象最终都将以&lt;span lang="EN-US"&gt;XNA&lt;/span&gt;的形式绘制出来，这也是成就&lt;span lang="EN-US"&gt;SL.XNA&lt;/span&gt;模式得以完美兼具&amp;#8220;效率&amp;#8221;与&amp;#8220;性能&amp;#8221;的根本原因。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; line-height: 150%"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;接下来我们也来俗一把，分别用&lt;span lang="EN-US"&gt;Silverlight&lt;/span&gt;的&lt;span lang="EN-US"&gt;TextBlock&lt;/span&gt;和&lt;span lang="EN-US"&gt;XNA&lt;/span&gt;的&lt;span lang="EN-US"&gt;Font&lt;/span&gt;编写&lt;span lang="EN-US"&gt;Hello Game&lt;/span&gt;：&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;protected&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;override&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;OnNavigatedTo(NavigationEventArgs&amp;nbsp;e)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;设置图形设备的共享模式以启用&amp;nbsp;XNA&amp;nbsp;呈现&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;graphicsDevice.SetSharingMode(&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;创建可以用来绘制纹理的新&amp;nbsp;SpriteBatch。&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;spriteBatch&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;SpriteBatch(graphicsDevice);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;TODO:&amp;nbsp;使用&amp;nbsp;this.content&amp;nbsp;在此处加载游戏内容&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;textBlock&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;TextBlock()&amp;nbsp;{&amp;nbsp;Text&amp;nbsp;=&amp;nbsp;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Hello&amp;nbsp;Game,&amp;nbsp;I,m&amp;nbsp;Silverlight&amp;nbsp;TextBlock&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&amp;nbsp;};&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LayoutRoot.Children.Add(textBlock);&amp;nbsp;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;将textBlock添加进Canvas画布中&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Canvas.SetLeft(textBlock,&amp;nbsp;&lt;span style="color: #800080"&gt;10&lt;/span&gt;);&amp;nbsp;Canvas.SetTop(textBlock,&amp;nbsp;&lt;span style="color: #800080"&gt;20&lt;/span&gt;);&amp;nbsp;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;设置textBlock在画布中的绝对位置&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;font&amp;nbsp;=&amp;nbsp;content.Load&amp;lt;SpriteFont&amp;gt;(&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Font/MyFont&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;timer.Start();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;base&lt;/span&gt;.OnNavigatedTo(e);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;允许页面绘制自身。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;Draw(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&amp;nbsp;sender,&amp;nbsp;GameTimerEventArgs&amp;nbsp;e)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;graphicsDevice.Clear(Color.CornflowerBlue);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;elementRenderer.Render();&amp;nbsp;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;通过elementRenderer呈现Silverlight中的UElement&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;spriteBatch.Begin();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;spriteBatch.Draw(elementRenderer.Texture,&amp;nbsp;Vector2.Zero,&amp;nbsp;Color.White);&amp;nbsp;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;通过XNA的形式将elementRenderer整体绘制出来&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;spriteBatch.DrawString(font,&amp;nbsp;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Hello&amp;nbsp;Game,&amp;nbsp;I,m&amp;nbsp;XNA&amp;nbsp;Font&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;,&amp;nbsp;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;Vector2(&lt;span style="color: #800080"&gt;20&lt;/span&gt;,&amp;nbsp;&lt;span style="color: #800080"&gt;55&lt;/span&gt;),&amp;nbsp;Color.Yellow);&amp;nbsp;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;第三个参数代表绘制的绝对位置&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;spriteBatch.End();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; line-height: 150%"&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120329/13.png" border="0" longdesc="" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; line-height: 150%"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;默认情况下，后&lt;span lang="EN-US"&gt;Draw&lt;/span&gt;的对象显示在最顶层；当然，如果你想动态更改他们之间的层级深度关系，可以使用&lt;span lang="EN-US"&gt;Draw&lt;/span&gt;方法的其他形态，比如：&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&lt;img height="214" alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120329/14.jpg" width="759" border="0" longdesc="" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; text-align: left; mso-layout-grid-align: none" align="left"&gt;&lt;span style="font-size: 14pt; font-family: 宋体"&gt;值得一提的是，如上面代码所示&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; color: #2b91af; font-family: NSimSun; mso-font-kerning: 0pt; mso-bidi-font-family: NSimSun"&gt;UIElementRenderer&lt;/span&gt;&lt;span style="font-size: 14pt; font-family: 宋体"&gt;对象创建于&lt;span lang="EN-US"&gt;GamePage_LayoutUpdated&lt;/span&gt;事件中，它的第一个&lt;span lang="EN-US"&gt;UIElement&lt;/span&gt;类型参数为&lt;span lang="EN-US"&gt;this&lt;/span&gt;，即指整个&lt;span lang="EN-US"&gt;GamePage&lt;/span&gt;页面&lt;span lang="EN-US"&gt;(UserControl)&lt;/span&gt;：&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US" style="font-size: 14pt; font-family: 宋体"&gt;&lt;img height="143" alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120329/15.jpg" width="592" border="0" longdesc="" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; line-height: 150%"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;试想一下，如果换成是一个&lt;span lang="EN-US"&gt;Image&lt;/span&gt;或者&lt;span lang="EN-US"&gt;ListBox&lt;/span&gt;等控件呢？高度自由的&lt;span lang="EN-US"&gt;UIElementRenderer&lt;/span&gt;给了我们&lt;span lang="EN-US"&gt;SL.XNA&lt;/span&gt;游戏开发无限遐想空间，不是吗？&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; line-height: 150%"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;至此，资源布局及代码结构这些毛坯级也是最核心的框架构建完毕，无论您是单纯的&lt;span lang="EN-US"&gt;Silverlight&lt;/span&gt;开发者，或者&lt;span lang="EN-US"&gt;XNA&lt;/span&gt;游戏开发者，亦或者两者通杀型，这个框架都能为你提供可无限拓展的高性能空间。下一节，我将继续为大家深入讲解&lt;span lang="EN-US"&gt;SL.XNA&lt;/span&gt;中的控件交互，关注哦，^ ^。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;本节源码下载地址：&lt;span lang="EN-US"&gt;&lt;a href="http://files.cnblogs.com/alamiye010/SLXnaGame1.zip" target="_blank"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&lt;span lang="EN-US"&gt;SLXnaGame1.zip&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;手记小结：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;本节非常详细的为大家讲解了如何从&lt;span lang="EN-US"&gt;0&lt;/span&gt;开始一步步搭建基于&lt;span lang="EN-US"&gt;Silverlight.XNA&lt;/span&gt;游戏框架；新手、老手，又或者你擅长的是&lt;span lang="EN-US"&gt;Silverlight&lt;/span&gt;、&lt;span lang="EN-US"&gt;WPF&lt;/span&gt;或&lt;span lang="EN-US"&gt;XNA&lt;/span&gt;；对于初出茅庐的&lt;span lang="EN-US"&gt;Windows Phone&lt;/span&gt;开发者来说这都是一篇开卷有益的启蒙之章，包括后续的更多章节，旨在通过自身的开发经历让朋友们高效率的掌握Windows Phone开发中关于&lt;span lang="EN-US"&gt;C#&lt;/span&gt;、&lt;span lang="EN-US"&gt;xaml&lt;/span&gt;、&lt;span lang="EN-US"&gt;Silverlight&lt;/span&gt;、&lt;span lang="EN-US"&gt;XNA&lt;/span&gt;等多方面知识。毕竟，一个人的能力与时间极其有限，卓越而经典的游戏需要更多的开发者参与进来，相信我们的共同努力可以铸成属于中国人辉煌的游戏江山！&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;推荐参考：&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&lt;a href="http://cnblogs.com/nowpaper" target="_blank"&gt;&lt;font face="Times New Roman" color="#0000ff"&gt;Nowpaper&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;和&lt;span lang="EN-US"&gt;&lt;a href="http://www.cnblogs.com/wangergo" target="_blank"&gt;&lt;font face="Times New Roman" color="#0000ff"&gt;Williams&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;关于&lt;span lang="EN-US"&gt;Windows Phone&lt;/span&gt;的游戏开发博客。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;img src="http://www.cnblogs.com/alamiye010/aggbug/2423524.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/alamiye010/archive/2012/03/29/2423524.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/alamiye010/archive/2012/03/16/2400446.html</id><title type="text">Unity3D 页游测评报告</title><summary type="text">不可否认，3D页游前方的路依旧漫长；既有客观大环境的因素在限制阻挠，其实更多的是开发者们畏惧创新，畏惧优化，畏惧一切现实无法参考的事物；抄袭之风已在全世界蔓延，而不仅仅是中国，这是3D页游发展的最大瓶颈。</summary><published>2012-03-16T08:03:00Z</published><updated>2012-03-16T08:03:00Z</updated><author><name>深蓝色右手</name><uri>http://www.cnblogs.com/alamiye010/</uri></author><link rel="alternate" href="http://www.cnblogs.com/alamiye010/archive/2012/03/16/2400446.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/alamiye010/archive/2012/03/16/2400446.html"/><content type="html">&lt;p&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;目前，能够实现3D页游的主流技术有Silverlight.XNA、Flash、HTML5和Unity3D。其中，Unity3D作为一款专注于3D游戏的浏览器插件，近期在国内外页游产品线骚动异常；本人从多方收集到可注册的Unity3D页游测试发现，当下的Unity3D技术应用尤其在国内正遭遇着尴尬而无奈的窘迫境地，原因为何？大伙不妨先看看其中7款游戏测试数据：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;《&lt;a href="http://www.game3d.com.cn/" target="_blank"&gt;&lt;span&gt;骑士的&lt;span&gt;远&lt;span&gt;征&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;》（国产）&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;类型：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;SLG&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;模型与场景环境：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;低&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;性能：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;一般&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;下载体验：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;动态加载UI和模型动画，但很卡，耗时久&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;操作：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;典型的保姆管家式引导，不顺手&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;综合：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;单机英雄无敌精简山寨版，传统回合制战棋战斗玩法&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;论坛玩家评价：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;卡，枯燥&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;截图：&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&lt;img height="395" alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120316/0.jpg" width="553" border="0" longdesc="" /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;《&lt;a href="http://tcd.afmgames.com/" target="_blank"&gt;&lt;span&gt;天宠&lt;span&gt;岛&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;》（国产）&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;类型：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;休闲对战&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;模型与场景环境：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;低&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;性能：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;动态对象少，画面较简单，性能一般。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;下载体验：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;第一次进入加载量巨大(本人10M带宽加载了超过5分钟)，对于网吧和普通带宽玩家来说是毁灭性体验，极易造成用户流失。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;操作：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;3D&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;物件动态加载，但没加载完成前均无法被鼠标点击命中，对于新手引导等方面用户体验较差。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;综合：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;3D&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;引擎做的2D游戏，有种鸡肋的感觉，即没有发挥3D特长，同时在动态加载资源方面反而相当劣势。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;论坛玩家评价：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;没有新意，很傻，很无聊&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;截图：&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&lt;img height="292" alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120316/1.jpg" width="496" border="0" longdesc="" /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;《&lt;span style="font-family: 宋体"&gt;&lt;a href="http://uberstrike.cmune.com/" target="_blank"&gt;Uberstrike&lt;/a&gt;&lt;/span&gt;》韩国&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;类型：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;FPS&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;第一人称射击&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;模型与场景环境：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;中等， CS1.6画面水平&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;性能：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;动态下载资源时会导致卡屏&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;下载体验：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;第一次进入加载量巨大(10M带宽加载了超过5分钟)。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;操作：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;和CS一样&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;综合：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;无亮点，还算流畅&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;论坛玩家评价：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;加入了科幻元素的CS网页版。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;截图：&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&lt;img height="414" alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120316/2.jpg" width="553" border="0" longdesc="" /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;《&lt;a href="http://www.nplay.com/InvinciCar_Online/" target="_blank"&gt;InvinciCar&lt;/a&gt;》（美国）&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;类型：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;竞速&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;模型与场景环境：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;很低&amp;#8230;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;性能：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;英语不好，一点Go FullScreen，浏览器马上死掉。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;下载体验：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;下载起来没什么感觉，很快&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;操作：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;简单&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;综合：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;感觉HTML上有无数比他优秀的竞速游戏&amp;#8230;&amp;#8230;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;论坛玩家评价：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;这游戏比较坑爹，连登陆都不用，进去直接可玩，难道这就是传说中的Free Play?还是只是一个演示Demo？&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;截图：&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&lt;img height="439" alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120316/3.jpg" width="554" border="0" longdesc="" /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;《&lt;a href="http://star.42land.com/" target="_blank"&gt;&lt;span&gt;自由&lt;span&gt;星&lt;span&gt;球&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;》（国产）&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;类型：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;高度自由休闲游戏&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;模型与场景环境：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;方块，正如主题所述 - 世界就是方块(Minecraft)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;性能：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;方块好多，有时蛮卡&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;下载体验：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;第一次进入加载量挺大，每次打开网页都要重新全部加载？？啊？是Chrome的问题吗？？&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;操作：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;非常非常非常&amp;#8230;&amp;#8230;简单&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;综合：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;该游戏拥有非常浓厚的国外某块大作影子，应该也算得上页游界首款&amp;#8220;硬游戏&amp;#8221;了，针对国内非常特殊的页游玩家群体，游戏是否能把握住此类&amp;#8220;大爱玩家群体&amp;#8221;的心成为游戏成败关键。换个角度，或许该游戏在国外或移动平台上会比Web表现得更亮眼也说不定呢。另外，游戏极易导致浏览器崩溃&amp;#8230;难道Chrome是垃圾！？&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;论坛玩家评价：还是看看&lt;strong&gt;&lt;a href="http://site.douban.com/widget/notes/3097511/note/204056090/" target="_blank"&gt;CEO&lt;span&gt;致玩家信&lt;/span&gt;&lt;/a&gt;&lt;/strong&gt;吧。&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;截图：&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&lt;img height="399" alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120316/4.jpg" width="554" border="0" longdesc="" /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;《&lt;a href="http://pkdx.0h.cn/indexdx.html" target="_blank"&gt;&lt;span&gt;推倒&lt;/span&gt;&lt;/a&gt;》（国产）&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;类型：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;MMORPG&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;（&lt;strong&gt;&lt;span style="color: red"&gt;注意：以下仅是对目前正处于测试阶段半成品的测评报告&lt;/span&gt;&lt;/strong&gt;）&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;模型与场景环境：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;中&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;性能：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;暂无深度测试&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;下载体验：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;这方面做得比其他的好些，对于10M带宽来说还算可以接受&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;操作：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;传统3D操作方式，但在宣传时还存在一些联动缺陷&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;综合：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;平平淡淡&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;论坛玩家评价：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;毕竟还是半成品&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;截图：&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&lt;img height="324" alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120316/5.jpg" width="554" border="0" longdesc="" /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;《&lt;a href="http://jaggedalliance.gamigo.com/en/" target="_blank"&gt;&lt;span&gt;铁血联盟Online&lt;/span&gt;&lt;/a&gt;》(美国)&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;类型：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;SLG&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;模型：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;低，不过很平滑精细(老外设计师就是不一样)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;性能：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;一般&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;下载速度：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;场景加载耗时很长&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;操作：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;较简单，与经典的《铁血联盟》仍有很大差距&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;综合：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;目前应该是公测，但BUG超多，更像是目前&amp;#8220;盖房子&amp;#8221;类页游的&amp;#8220;二战雇佣兵3D单机版&amp;#8221;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;论坛玩家评价：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;卡，BUG多，像单机版，每次打开游戏页面都需要重新更新，且更新时间很长。&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;截图：&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&lt;img height="297" alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120316/6.jpg" width="474" border="0" longdesc="" /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;除此之外，还有比如&lt;strong&gt;《&lt;a href="http://www.3dttw.com/home.html" target="_blank"&gt;&lt;span&gt;图&lt;span&gt;腾&lt;span&gt;王&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;》、《决斗之刃》、《胸怀三国志》（韩国）、《&lt;a href="http://bluemoon.pmangplus.com/" target="_blank"&gt;&lt;span&gt;蓝&lt;span&gt;月&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;》（韩国）&lt;/strong&gt;等等可搜索到的Unity3D页游，不过由于种种原因无法测试到，所以暂且就告一段落。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;经过以上亲测体验，本人感触最深的是3D页游的发展，尤其在国内面临着&amp;#8220;巨大&amp;#8221;的推广瓶颈：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;1&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;、就目前测试到的Unity3D页游来说，基本都是简单休闲类，但这正是2D的强项-亲切而简约；并且3D资源总比2D庞大许多，后期加载的资源容量随便就会达到数百兆之多，&lt;strong&gt;&lt;u&gt;&lt;span style="color: red"&gt;如果无法很优秀的处理好动态加载这个环节的话&lt;/span&gt;&lt;/u&gt;&lt;/strong&gt;，对于国内以2M网速居多的家庭及单位用户来说，浪费玩家时间即&lt;strong&gt;&lt;u&gt;&lt;span style="color: red"&gt;等同于自我毁灭&lt;/span&gt;&lt;/u&gt;&lt;/strong&gt;。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;2&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;、企事业单位电脑基本&lt;strong&gt;&lt;u&gt;&lt;span style="color: red"&gt;无独立显卡&lt;/span&gt;&lt;/u&gt;&lt;/strong&gt;，对于3D GPU加速来说是致命性的。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;3&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;、就目前所体验到的Unity3D游戏直观效果来说，其实以各种微端技术开发，不用10M，&lt;a href="http://bd.yi6.com/" target="_blank"&gt;&lt;strong&gt;&lt;u&gt;&lt;span style="color: #3366ff"&gt;甚至有的0.7的容量便能达到一模一样设置更流畅而华丽效果&lt;/span&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&lt;u&gt;&lt;span style="color: red"&gt;(目前很流行的微端后期后台异步多线程动态加载模式)&lt;/span&gt;&lt;/u&gt;&lt;/strong&gt;，玩家为何不选择高性能微端而采用还加了个壳，性能大降的3D插件？这个真有待开发者深入琢磨琢磨。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;4&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;、普遍看来，目前不光是Unity3D页游产品，微端和其他插件3D产品也都处于摸着石头过河阶段，大都以实现功能为主，没有看到创新和亮点&amp;#8230;，这便意味着和Money还很难搭上边，如果财力雄厚，为10年磨一剑贮备培养未来人才倒是不错的铺垫：前人栽树，后人乘凉嘛。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;5&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;、国内所有Unity3D页游都不推荐使用占有率高达50%以上的IE6，其他插件似乎没这个说法，因本人未开发过Unity3D，所以具体原因尚不清楚。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;6&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;、国内与国外环境的迥异，比如国外Unity3D页游首页都不会放什么&amp;#8220;Unity3D插件下载安装&amp;#8221;之类的按钮，甚至你可能从头到尾都不会知道该游戏到底是什么技术开发的，只有当你的电脑没有安装Unity3D插件时才会提示下载安装，然后跳转到Unity3D国外官网；而国内则因为运营商和XP+IE6的存在，所以出现了前面所述令外国人觉得异常怪异的事情，或许这种情况还会持续long long time，没办法，这就是社会主义国家之国情。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;综上，Unity3D页游被夹杂在2D页游和3D微端之间的尴尬境地，难道就没有解决之道吗？想想当年的《雷神之锤》在如此低配置电脑上流畅运行，我们不难想象，单单怪插件公平吗？&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;大家是否还记得Silverlight.XNA中的一个名为&lt;a href="http://code.msdn.microsoft.com/Babylon-3D-engine-f0404ace/sourcecode?fileId=45074&amp;amp;pathId=1930388978" target="_blank"&gt;Babylon 3D Engine&lt;/a&gt;的开源项目吗？它在动态加载模型方面做得异常出色，我们是不是可以从中得到一些启发呢？&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;不可否认，3D页游前方的路依旧漫长；既有客观大环境的因素在限制阻挠，其实更多的是开发者们畏惧创新，畏惧优化，畏惧一切现实无法参考的事物；抄袭之风已在全世界蔓延，而不仅仅是中国，这才是3D页游最大的瓶颈。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;一款游戏如果真的很有趣，我会毫不吝惜口袋那些钞票，甚至呼朋唤友，兴奋得到处张扬；然而反过来，试问在坐的开发者们：你们开发的游戏真的好玩吗？&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/alamiye010/aggbug/2400446.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/alamiye010/archive/2012/03/16/2400446.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/alamiye010/archive/2012/02/21/2360931.html</id><title type="text">Silverlight - 无畏前行之刀锋战士</title><summary type="text">Silverlight 5目前已经集成了WPF和XNA的所有精髓，未来，Silverlight作为浏览器插件、WindowPhone平台开发模式以及Win8内置的重要组件，其最合理的存在形式便是“自动更新”。这便是微软对Silverlight技术的功能及定位已趋向成熟的最终肯定。</summary><published>2012-02-21T02:42:00Z</published><updated>2012-02-21T02:42:00Z</updated><author><name>深蓝色右手</name><uri>http://www.cnblogs.com/alamiye010/</uri></author><link rel="alternate" href="http://www.cnblogs.com/alamiye010/archive/2012/02/21/2360931.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/alamiye010/archive/2012/02/21/2360931.html"/><content type="html">&lt;p&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;Silverlight&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;，一个低调而伟大的人名，是他创世了Silverlight。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;Silverlight&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;发展至今一直遭受着内外多方压力，其根源离不开主流技术之间的博弈以及微软内部利益集团间的名争暗斗。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;Silverlight&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;早期1.0时，开发模式为Javascript+C#+xaml，最初的目的是打算实现Flash所不能实现的跨平台以及SEO，同时吸收所有Javascript阵营和.NET阵营的开发者融入，可谓集大成者。随着2.0的发布，慢慢的Silverlight越来越倾向于独立的.NET开发者，且功能越发的超越WPF范畴，不仅得罪了原先的Javascript开发者，同时亦背弃了WPF/E的初衷，大幅分化了WPF开发者，这并不是微软内部某些利益集团高层所希望看到的；而后的Silverlight 5又将XNA给集成了，从那时起，微软内部各方开始恐惧Silverlight这个洪水猛兽，害怕某天连同自己苦心经营的产品也给吞噬了。介于此，Silverlight发展至今受到来自内部WPF\XNA\IE以及外部Flash/Javascript等利益集团的极力阻挠，一路走来非常坎坷。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;尤其最近，很朋友开始纠结到底还有没有Silverlight 6？从心里学角度分析，这是人类对完美事物追求的潜意识情节，大家都喜欢越来越好的事物，喜欢永远保值增值的东西，试问谁不想&amp;#8220;永葆青春&amp;#8221;、&amp;#8220;长生不老&amp;#8221;？&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;最典型的例子要属当下许多不明真相的无良人士对HTML5的追捧，该现象便源于对所谓&amp;#8220;完美&amp;#8221;技术的盲目崇拜。然而背离真理的事实告诉我们完美的东西并不存在。完美便意味着&amp;#8220;终结&amp;#8221;，谁都如此。我们不妨假设HTML5就是完美技术，当所有的程序员都在用Javascript编程时，日子久了人们会逐渐发现HTML5+Javascript的不足甚至弊端，会否有英雄站出来挑战它呢？当然，而且还会有很多，揭竿而起各抒己见，新的超越HTML5的技术必将出现，以次往复。历史前进的车轮走过无数世纪，见证了无数朝代变迁与科技演化，就人类目前的认知能力而言，说&amp;#8220;完美&amp;#8221;还尚早了。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;近期，与Silverlight工作人员的交流让本人茅舍顿开，原来事实并非网上流传的那样Silverlight即将终结；相反，&lt;strong&gt;&lt;u&gt;&lt;span style="color: navy"&gt;该现象映射了微软对Silverlight技术的功能及定位已趋向成熟的最终肯定。&lt;/span&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;Silverlight&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;目前最大的弱势便在于装机量，当然，随着时间的推移并伴随着Win8+对Silverlight的集成，这个数据会急速飙升。&lt;strong&gt;&lt;u&gt;&lt;span style="color: red"&gt;Silverlight 5&lt;/span&gt;&lt;span style="color: red"&gt;目前已经集成了WPF和XNA的所有精髓，未来，Silverlight作为浏览器插件、WindowPhone平台开发模式以及Win8内置的重要组件，其最合理的存在形式便是&amp;#8220;自动更新&amp;#8221;&lt;/span&gt;&lt;/u&gt;&lt;/strong&gt;。我们完全可以从今天起，将Silverlight 5看做是没有版本号的Silverlight，这样，就算每次更新、升级、改造、维护，用户都无需重新下载安装新的Silverlight.exe，&amp;#8220;一键式自动更新&amp;#8221;将极大的提升和优化用户体验，同时也避免了在安装Silverlight过程中可能出现的新版本与旧版本之间的冲突而导致的用户流失。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="http://images.cnblogs.com/cnblogs_com/alamiye010/20120508/110.jpg" width="380" height="335" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Flash&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; "&gt;已彻底放弃移动平台，退而选择固守其原有地位；HTML5依旧与HTML4一样，专心扮演好新一代浏览器基础应用活雷锋角色；而Silverlight则以精简的.NET框架形式，秉持最具潜力的C#开发语言优势统一未来桌面及浏览器高级应用领域，通过在Windows Phone与Windows Pad移动平台上的优秀表现与技术积累，逐步向跨平台快速开发方向延伸。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;而对于开发者来说，&lt;strong&gt;产品胜过雄辩&lt;/strong&gt;，这才是IT技术领域永恒不变之法则。&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/alamiye010/aggbug/2360931.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/alamiye010/archive/2012/02/21/2360931.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/alamiye010/archive/2012/01/19/2327574.html</id><title type="text">Silverlight游戏研发手记：(五)SLG动感增效之《幻影粒子》</title><summary type="text">如果说过去，因为计算机的性能瓶颈开发不出高画质、华丽的SLG游戏；但今天，足够的条件让这一切成为现实：Silverlight + 《幻影粒子》，我们正全力打造下一代动感十足之SLG。</summary><published>2012-01-19T10:49:00Z</published><updated>2012-01-19T10:49:00Z</updated><author><name>深蓝色右手</name><uri>http://www.cnblogs.com/alamiye010/</uri></author><link rel="alternate" href="http://www.cnblogs.com/alamiye010/archive/2012/01/19/2327574.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/alamiye010/archive/2012/01/19/2327574.html"/><content type="html">&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; line-height: 150%"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;随着电子技术发展与普及，人们使用电脑时间越来越长，由于人类自身身体比如眩晕症、眼球衰老等客观因素存在，未来玩家会更加倾向于低视疲劳度&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;/&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;低神经刺激的绿色健康休闲&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;2D&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;游戏而非&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;3D&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;a href="http://game.163.com/12/0109/10/7NAOC2VK00314K9A.html" target="_blank"&gt;&lt;span lang="EN-US" style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;&lt;span lang="EN-US"&gt;《希魔复活》&lt;/span&gt;&lt;/span&gt;&lt;font face="Times New Roman"&gt;2D/3D&lt;/font&gt;&lt;span lang="EN-US" style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;&lt;span lang="EN-US"&gt;双版本&lt;span lang="EN-US"&gt;发售后&lt;span lang="EN-US"&gt;截然不同的&lt;span lang="EN-US"&gt;反响&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;&lt;span lang="EN-US"&gt;再一次向印证&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;&lt;span lang="EN-US"&gt;了&lt;/span&gt;&lt;/span&gt;&lt;font face="Times New Roman"&gt;2D&lt;/font&gt;&lt;span lang="EN-US" style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;&lt;span lang="EN-US"&gt;游戏&lt;span lang="EN-US"&gt;是&lt;span lang="EN-US"&gt;永远不会被&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Times New Roman"&gt;3D&lt;/font&gt;&lt;span lang="EN-US" style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;&lt;span lang="EN-US"&gt;取代&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;&lt;span lang="EN-US"&gt;的&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;&lt;span lang="EN-US"&gt;，甚至超越&lt;span lang="EN-US"&gt;！&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;当然，超越的关键便在于游戏的动态细节处理与把握，这是一种历史必然的进化而非简单回归。&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; line-height: 150%"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;如果说过去，因为计算机的性能瓶颈开发不出高画质、华丽的&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;SLG&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;游戏；但今天，足够的条件让这一切成为现实：&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;Silverlight + &lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;《幻影粒子》，我们正全力打造下一代动感十足之&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;SLG&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; line-height: 150%"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;还在为游戏中华丽的魔法特技而流口水吗？&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; line-height: 150%"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"&gt;&lt;v:stroke joinstyle="miter"&gt;&lt;/v:stroke&gt;&lt;v:formulas&gt;&lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @0 1 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum 0 0 @1"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @2 1 2"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @3 21600 pixelWidth"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @3 21600 pixelHeight"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @0 0 1"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @6 1 2"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @7 21600 pixelWidth"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @8 21600 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @7 21600 pixelHeight"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @10 21600 0"&gt;&lt;/v:f&gt;&lt;/v:formulas&gt;&lt;v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"&gt;&lt;/v:path&gt;&lt;o:lock v:ext="edit" aspectratio="t"&gt;&lt;/o:lock&gt;&lt;/v:shapetype&gt;&lt;img height="497" alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/120119/0.jpg" width="638" border="0" longdesc="" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28pt; line-height: 150%; mso-char-indent-count: 2.0"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;其实这一切效果包括阳光、雨滴、瀑布、火焰、爆炸、烟雾、涟漪、魔法等等，我们都可以通过一款名为《幻影粒子》的工具轻松制作：&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;img height="800" alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/120119/1.jpg" width="600" border="0" longdesc="" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; line-height: 150%"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;《&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;a href="http://wenku.baidu.com/view/d42846d233d4b14e852468a5.html" target="_blank"&gt;&lt;span lang="EN-US" style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;&lt;span lang="EN-US"&gt;幻影粒子&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;》是一款专业级的&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;2D&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;动画特效制作软件&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;(&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;自带有庞大的粒子特效库，官方定期更新，且网上也可以找到很多第三方发布的特效库&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;)&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，绝对是&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;2D&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;游戏锦上添花之利器，其做出来的粒子效果毫不逊色于&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;3D&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。不夸张的说，甚至完全可以制作仿真级电影级特效。&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; line-height: 150%"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;没错，是它让我深刻感受到，动画已不再是美术的专利，《幻影粒子》让万能的游戏程序员神奇崛起！&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; line-height: 150%"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;当然，本人也仅仅是一名初学者，有兴趣深入学习的朋友可以在网上搜罗大量相关教程；对于大多数游戏开发者来说，以修改现成的案例作为入门，可以更好的了解该软件的整体使用流程和大致细节处理，掌握在如此庞大而现成的粒子效果库上进行修改和二次创作是性价比最高的使用方案。&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; line-height: 150%"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;那么就暂且班门弄斧一回，分享一下我为本系列教程&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;SLG Demo&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;添加几味特效的制作过程。&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;span lang="EN-US"&gt;&lt;img height="358" alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/120119/2.jpg" width="595" border="0" longdesc="" /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; line-height: 150%"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;以上为一幅传统的&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;RPG&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;地图，对于老游戏来说，或许这样的效果已经很精致了；但是现在的多核电子设备迅猛如此迅猛，以至于为了不让性能白白浪费，我们完全可以在画面方面更进一步，让效果最大化。&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; line-height: 150%"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;如何让静止的烟囱冒出滚滚浓烟？如何让古老的宝箱闪闪发光？如何让失落的水井格外突出？&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; line-height: 150%"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;传说，森林中的每一口水井深处都隐藏着神秘宝藏，当它的主人出现时便会放射出耀眼的绿色光芒。那好吧，我们就先为这口水井添加一道绿光吧！&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; line-height: 150%"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;循着光的轨迹，我们打开《幻影粒子》：&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;img height="630" alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/120119/3.jpg" width="530" border="0" longdesc="" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;在库面板上右键&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;-&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;快速载入粒子库，我们可以看到已经集成了十多款非常经典的的粒子特效库。&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28pt; line-height: 150%; mso-char-indent-count: 2.0"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;其中的&amp;#8220;火花粒子&amp;#8221;库中便有一款很有神秘感名为&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;Star Trail 3&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的粒子特效：&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;img height="234" alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/120119/4.jpg" width="237" border="0" longdesc="" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28pt; line-height: 150%; mso-char-indent-count: 2.0"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;播放后发现尺寸大了些且颜色也不对，必须得修改。于是我们双击打开它的&amp;#8220;发射器属性&amp;#8221;并对其局部细节及&amp;#8220;缩放&amp;#8221;和&amp;#8220;粒子颜色&amp;#8221;属性进行调整：&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;img height="1110" alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/120119/5.jpg" width="600" border="0" longdesc="" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;img height="334" alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/120119/6.jpg" width="573" border="0" longdesc="" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;img height="278" alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/120119/7.jpg" width="362" border="0" longdesc="" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对比地图中水井的大致尺寸对整个项目进行缩放：&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;img height="348" alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/120119/8.jpg" width="372" border="0" longdesc="" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;img height="203" alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/120119/9.jpg" width="527" border="0" longdesc="" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28pt; line-height: 150%; mso-char-indent-count: 2.0"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;接下来在项目窗口正中间点击一下，便可将该特效放置于项目中：&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;img height="179" alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/120119/10.jpg" width="231" border="0" longdesc="" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;点击绿色播放按钮，嘿嘿&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;~&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;闪耀的绿光出现啦&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;~&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;！&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;img height="72" alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/120119/11.jpg" width="293" border="0" longdesc="" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;img height="214" alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/120119/12.jpg" width="276" border="0" longdesc="" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;剩下的问题是，在&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;Silverlight&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的游戏中如何使用它？当然，首先得将这个动画进行输出：&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;img height="347" alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/120119/13.jpg" width="428" border="0" longdesc="" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;img height="211" alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/120119/14.jpg" width="593" border="0" longdesc="" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28pt; line-height: 150%; mso-char-indent-count: 2.0"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;《幻影粒子》提供的输出格式还挺多的，经过本人一一测试，最终的结论是：只有&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;AVI(&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;无损&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;)&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;和&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;PNG(&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;有损&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;)&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;比较靠谱，分别对应电影特效和游戏特效应用领域。&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28pt; line-height: 150%; mso-char-indent-count: 2.0"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对于&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;Silverlight&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;来说，毫无疑问，当然选择&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;PNG&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。当然，特别需要注意的是尽量规避黑色的元素部件；因为《幻影粒子》导出的&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;PNG&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;并非无损，尤其是粒子效果中若掺杂有黑色像素，导出的图片相当糟糕：&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;img height="302" alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/120119/15.jpg" width="551" border="0" longdesc="" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28pt; line-height: 150%; mso-char-indent-count: 2.0"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;OK&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，按照以上参数点击确定后，我们便可得到连续的&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;120&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;帧粒子动画&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;PNG&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;序列图片。实际上绝大多数&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;2D&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;游戏基本都用不上如此高的帧频，所以我们可以根据游戏的实际品质需求，截取中间部分，并间隔提取必要帧图，比如每间隔&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;4&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;提取一张便足以构建一个连贯循环的绿光动画，再以连续有规律的数字对它们进行命名：&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;img height="1136" alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/120119/16.jpg" width="484" border="0" longdesc="" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28pt; line-height: 150%; mso-char-indent-count: 2.0"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;最后，将这些图帧添加到游戏中并通过一个名为&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;Animation&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的控件呈现出来。以同样的方法，我们在《幻影粒子》中也能找到现成类似的冒烟及闪光动画，将它们稍作修改后便可加入到游戏中烟囱和宝箱上面&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;~&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;哈，瞬间整个游戏生动了许多！&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;img height="325" alt="" src="http://images.cnblogs.com/cnblogs_com/alamiye010/120119/17.jpg" width="547" border="0" longdesc="" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28pt; line-height: 150%; mso-char-indent-count: 2.0"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;这是一款基于&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;Silverlight&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;SLG&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;游戏引擎的一部分，在线演示&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;Demo&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;如下&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;(&lt;/font&gt;&lt;a href="http://files.cnblogs.com/alamiye010/SLGDemo5.rar" target="_blank"&gt;&lt;span lang="EN-US" style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;&lt;span lang="EN-US"&gt;点击下载该&lt;/span&gt;&lt;/span&gt;&lt;font face="Times New Roman"&gt;Demo&lt;/font&gt;&lt;span lang="EN-US" style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;&lt;span lang="EN-US"&gt;源码&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;font face="Times New Roman"&gt;)&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;：&lt;/span&gt;&lt;object type="application/x-silverlight-2" height="360" width="600" data="data:application/x-oleobject;base64,QfXq3+HzJEysrJnDBxUISgAJAAADPgAANSUAAAwAAAB3AGgAaQB0AGUAAAAAAAAAAAAAAAAAAABiAAAAaAB0AHQAcAA6AC8ALwBmAGkAbABlAHMALgBjAG4AYgBsAG8AZwBzAC4AYwBvAG0ALwBhAGwAYQBtAGkAeQBlADAAMQAwAC8AUwBMAEcARABlAG0AbwA1AC4AeABhAHAAAAA8AAAAAAAAACYAAABvAG4AUwBpAGwAdgBlAHIAbABpAGcAaAB0AEUAcgByAG8AcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAABgAAAA0AC4AMAAuADYAMAAzADEAMAAuADAAAAAKAAAAdAByAHUAZQAAAP//AAAAAAAAAAAAAA=="&gt;&lt;param name="source" value="http://files.cnblogs.com/alamiye010/SLGDemo5.xap"     /&gt;&lt;param name="onError" value="onSilverlightError"     /&gt;&lt;param name="background" value="white"     /&gt;&lt;param name="EnableGPUAcceleration" value="true"     /&gt;&lt;param name="minRuntimeVersion" value="4.0.60310.0"     /&gt;&lt;param name="autoUpgrade" value="true"     /&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=149156&amp;v=4.0.60310.0" style="text-decoration:none"&gt;&lt;img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="获取 Microsoft Silverlight" style="border-style:none"       /&gt;&lt;/a&gt;     &lt;/object&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28pt; line-height: 150%; mso-char-indent-count: 2.0"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;手记思考：其实，最让人兴奋的莫过于通过《幻影粒子》制作出来的动画特效所有权完全属于制作者，制作者们再也不用担心版权问题&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;(&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;如此大量的变化参数，改动后的样式外观都会发生千变万化&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;)&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，在它的辅助下进行&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;Silverlight&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;游戏开发真乃如鱼得水&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;~&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;高性能开发效率搭配高品质，这难道不是我们所有游戏开发者最梦寐的追求吗！&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;o:p&gt;&lt;font face="Times New Roman"&gt;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;o:p&gt;&lt;font face="Times New Roman"&gt;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28pt; line-height: 150%; mso-char-indent-count: 2.0"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&lt;a href="http://www.cnblogs.com/nowpaper/archive/2011/12/18/2291706.html" target="_blank"&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;中游在线&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;的&lt;span lang="EN-US"&gt;&lt;a href="http://silvery.codeplex.com/" target="_blank"&gt;&lt;font face="Times New Roman"&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;《WOWO&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;世界开源》&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;，所有游戏厂商都开始在移动平台布局；随着&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;多核手机将成为趋势，手机游戏中多量炫彩动画将不再成为性能问题。&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;a href="http://www.mscbsc.com/viewnews-62481.html" target="_blank"&gt;&lt;span lang="EN-US" style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;&lt;span lang="EN-US"&gt;近期诺基亚宣布亚太总部将由新加坡迁至北京&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，这对于&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%"&gt;&lt;font face="Times New Roman"&gt;Windows Phone&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;应用开发来说锦上添花！加油吧，开发者们！&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/alamiye010/aggbug/2327574.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/alamiye010/archive/2012/01/19/2327574.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/alamiye010/archive/2011/12/14/2287991.html</id><title type="text">Google的Native Client微笑着抽了HTML5一记漂亮的耳光</title><summary type="text">Google在重新发明ActiveX/Flash，让HTML5崇拜者情何以堪？</summary><published>2011-12-14T11:40:00Z</published><updated>2011-12-14T11:40:00Z</updated><author><name>深蓝色右手</name><uri>http://www.cnblogs.com/alamiye010/</uri></author><link rel="alternate" href="http://www.cnblogs.com/alamiye010/archive/2011/12/14/2287991.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/alamiye010/archive/2011/12/14/2287991.html"/><content type="html">&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28pt; line-height: 150%; mso-char-indent-count: 2.0"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"&gt;日前，&lt;span lang="EN-US"&gt;&lt;a href="http://www.cnbeta.com/articles/165071.htm" target="_blank"&gt;&lt;span style="mso-bidi-font-family: 宋体"&gt;Google&lt;/span&gt;&lt;span lang="EN-US" style="mso-bidi-font-family: 宋体"&gt;&lt;span lang="EN-US"&gt;在加州&lt;span lang="EN-US"&gt;总&lt;span lang="EN-US"&gt;部的一次会议上首次公开演示了Native&amp;nbsp;Client&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="mso-bidi-font-family: 宋体"&gt;&lt;span lang="EN-US"&gt;项目（简称&amp;#8220;NaCl&amp;#8221;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="mso-bidi-font-family: 宋体"&gt;&lt;span lang="EN-US"&gt;）&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;，&lt;span lang="EN-US"&gt;Google&lt;/span&gt;已经花了三年多时间研发此项目并表示未来的浏览器中将整合该技术，同时宣布&lt;span lang="EN-US"&gt;Native Client&lt;/span&gt;即将起飞，开发者们准备好了吗？&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28pt; line-height: 150%; mso-char-indent-count: 2.0"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"&gt;Native Client&lt;/span&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"&gt;究竟是啥东西？&lt;span lang="EN-US"&gt;Google&lt;/span&gt;居然撇开&lt;span lang="EN-US"&gt;HTML5&lt;/span&gt;释放如此妖怪，&lt;span lang="EN-US"&gt;&lt;a href="http://www.2366.com/news/201112/14_130351.html" target="_blank"&gt;&lt;span lang="EN-US" style="mso-bidi-font-family: 宋体"&gt;&lt;span lang="EN-US"&gt;摘&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="mso-bidi-font-family: 宋体"&gt;&lt;span lang="EN-US"&gt;录&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="mso-bidi-font-family: 宋体"&gt;&lt;span lang="EN-US"&gt;相关&lt;span lang="EN-US"&gt;介绍&lt;span lang="EN-US"&gt;中&lt;span lang="EN-US"&gt;的&lt;span lang="EN-US"&gt;一段话&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;：&lt;span lang="EN-US"&gt;Native Client &lt;/span&gt;简单来说就是一套让网络应用&lt;span lang="EN-US"&gt; / &lt;/span&gt;软件开发者能够直接利用计算机中资源，而不需要间接透过浏览器来执行的开放原始码技术，&lt;strong style="mso-bidi-font-weight: normal"&gt;技术上跟&lt;span lang="EN-US"&gt; ActiveX&lt;/span&gt;、&lt;span lang="EN-US"&gt;Adobe &lt;/span&gt;的&lt;span lang="EN-US"&gt; Alchemy &lt;/span&gt;类似&lt;/strong&gt;。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28pt; line-height: 150%; mso-char-indent-count: 2.0"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"&gt;此文一出，众人纷纷表示那么它肯定是类似&lt;span lang="EN-US"&gt;.net&lt;/span&gt;或者&lt;span lang="EN-US"&gt;java&lt;/span&gt;之类的技术，&lt;span lang="EN-US"&gt;Google&lt;/span&gt;在重新发明&lt;span lang="EN-US"&gt;ActiveX/Flash&lt;/span&gt;。&lt;/span&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang="EN-US" style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;&lt;a href="http://developer.51cto.com/art/200906/126525.htm" target="_blank"&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;习惯&lt;span lang="EN-US"&gt;了Google&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;和&lt;span lang="EN-US"&gt;各位&lt;span lang="EN-US"&gt;跟班&lt;span lang="EN-US"&gt;每天&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;叫嚣着HTML5&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;就是未来&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体"&gt;，&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"&gt;就是上帝，就是如来；&lt;/span&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;u&gt;&lt;span lang="EN-US" style="font-size: 14pt; color: blue; line-height: 150%; font-family: 宋体"&gt;&lt;a href="http://www.cnbeta.com/articles/165147.htm" target="_blank"&gt;&lt;font face="Times New Roman"&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;怎知&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;却实在忍&lt;span lang="EN-US"&gt;不&lt;span lang="EN-US"&gt;住&lt;span lang="EN-US"&gt;蹦出&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;个Google&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;版Flash - Native Client&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;&lt;/u&gt;&lt;/strong&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"&gt;，着实让诸位&lt;span lang="EN-US"&gt;HTML5&lt;/span&gt;崇拜者大跌眼镜：不是约定好了不玩插件了吗？不是说&lt;span lang="EN-US"&gt;ActiveX&lt;/span&gt;是垃圾吗？我靠，又被断臂，你让&lt;span lang="EN-US"&gt;HTML5&lt;/span&gt;崇拜者情何以堪？难道&lt;span lang="EN-US"&gt;2012&lt;/span&gt;真是世界末日？&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28pt; line-height: 150%; mso-char-indent-count: 2.0"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"&gt;&lt;a href="http://chanye.uuu9.com/2011/201111/227308.shtml" target="_blank"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"&gt;顺便引用Zipline Game首席执行官的话：&amp;#8220;许多人都在谈论HTML5。但其中大多是虚假宣传。目前，我觉得它根本就是名不副实。&amp;#8221;Hooper说道，&amp;#8220;HTML5开发小组在各大发布会上吹得天花乱坠，但我们却没能见到游戏成品。实际情况是，大部分游戏开发者都不是HTML5程序员。而且，大部分游戏程序员都不愿意使用JavaScript。&amp;#8221;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; line-height: 150%"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"&gt;世界就是这样，微软的官僚作风让人难以接受，&lt;span lang="EN-US"&gt;Google&lt;/span&gt;的无间道更让人云里雾里。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 28.5pt; line-height: 150%"&gt;&lt;span style="font-size: 14pt; line-height: 150%; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"&gt;或许还是老人家说得对：成功，只青睐行动和事实，而非口舌之快者。&lt;span lang="EN-US"&gt;Silverlight再好其本身也&lt;/span&gt;不会给你带来什么，&lt;span lang="EN-US"&gt;HTML5&lt;/span&gt;目前更不可能带来什么，问下你自己的双手吧，它们给你带来了什么？&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/alamiye010/aggbug/2287991.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/alamiye010/archive/2011/12/14/2287991.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
