设为首页 收藏本站
查看: 885|回复: 0

Windows Phone 7 学习流水攻略(一)

[复制链接]

尚未签到

发表于 2015-5-12 10:34:28 | 显示全部楼层 |阅读模式
  学而不思则罔,思而不学则殆。
  从上周开始看Charles Petzold的《Programming Windows Phone 7》。书中的内容颇为丰富,受益匪浅。
  但也因为书中涵盖内容太多,需要做的笔记也很多,所以索性写博客按章节把内容总结出来。
  目的有两个:
  第一,对所学知识做一个总结。
  第二,便于以后按章节查找具体内容,毕竟书是英文版,如果要找相应内容面对长得差不多的英文还是要翻一阵的。
  
  好了,从前言开始吧!
  前言,大体介绍了安装开发环境需求(Windows 7系统,VS2010),书中的内容,一些资源的索引,本书针对的人群(对C#和.NET有经验)等。
  其中作者针对那些没有学习过C#和.Net的C++程序员(like me),推荐了他的一本书《.NET第0章:C或C++程序员必须知道的C#和.NET Framework》(.NET Book Zero: What the C or C++ Programmer Needs to Know about C# and the .NET Framework),我还真是好好看了一遍他推荐的这本书,从C/C++的程序员角度入手解释C#和.NET,算是启蒙书。
  书分三个部分:第一部分(1-6章)介绍Silverlight和XNA的共同部分,第二(7-18章)、第三(19-23章)部分分别介绍Silverlight和XNA下的开发。
  (国外的朋友写书喜欢留伏笔,前面大概说说,后面扩展,所以有些章节只是知识的索引大头在后面,中间的跨度可能有好几章)
  
  第一章,Hello, Windows Phone 7。
  一,介绍Silverlight和XNA上两个框架的异同。
  Silverlight偏流程,由事件触发流程。XNA偏游戏开发,主要是玩循环的。
  个人理解,XNA就是类似于纯的Windows API开发,当然也封装过了,为了省你的事给你架了一套处理图像处理机制。不然双缓冲,事件处理啥的就还得你做。
  Silverlight就是高级版的MFC(其实更像Flash),利用XAML布局,C#写后台。
  
  二,介绍硬件按键
  告诉你屏幕上那几个难看的按键都是干嘛用的。在后面的开发中,你会发现其实这几个按键具体触发的事件等。
  还有告诉你现在手机有可能出现的分辨率会是啥样的。另外告诉你屏幕的特性——屏幕Theme颜色越暗越省电。
  
  三,介绍硬件传感器和服务
  什么Wifi,摄像头,加速度传感器,位置服务(GPS),FM收音机,Push同步(Push Notifications,减少网络交互用的,必要时才做连接的服务)
  
  四,破处之旅
  告诉你VS里面怎么找到建立工程的入口。
  
  五,第一次和Silverlight搞
  告诉你怎么改程序标题,怎么运行(调试)程序,怎么在模拟器上玩的爽(调整模拟器屏幕大小)。
  
  六,一个Silverlight程序中包含的基本文件
  两对配对的开发文件:
  App.xaml和App.xmal.cs
  还有
  Main.xaml和Main.xmal.cs
  .xmal是前台文件.cs是对应的后台文件。
  App那一对是程序运行的入口文件和全局的配置文件。
  Main那一对是第一“夜”的服务内容。
  其中说到xaml生成的中间文件.g.cs(其实也是个cs文件)在obj/Debug目录下,这个文件可了不起了,是你xaml编译后生成的cs文件,其中包含了你在.cs文件中用到的变量声明。然后,利用了C#可以利用Partial将类份文件编译的语言特性,将声明和.cs文件揉起来。但是这个文件是自动生成的,不要做修改,因为如果你修改了下次重编的时候还会变回去,要是想修改就看看你的xaml文件有没写错吧!!
  接着,分别介绍了xaml基本标签的含义,如,,等等
  最后告诉你怎么通过修改xaml改标题和添加一个TextBlock,并且介绍了TextBlock的HorizontalAlignment和VerticalAlignment属性。
  
  七,颜色主题
  介绍如何换主题,还有通过TextBlock的Foreground属性变换字体颜色。
  
  八,教你怎么算字体大小和字体的实际大小
  
  九,告诉你WP7程序打包的秘密
  XAP程序包文件其实是个zip文件,你把后缀xap文件改成后缀zip,可以用Winzip打开查看其中的资源。
  我发现资源是散着的,而程序是个dll。
  
  十,第一个XNA程序
  一个新的XNA工程的结构:一个新开的XNA项目,有两个工程,一个是资源工程,一个是逻辑工程。
  介绍了如何向资源工程里添加字体,如何编辑SpriteFont文件,里面的标签是干啥的,如:FoneName,Size,CharacterRegions等等。
  介绍了在逻辑工程Game1.cs文件中添加一个自定义字体的方法:
  要建立N个变量……
  在Game1()构造函数里生成对象,
  运行Initialize()函数初始化,
  在LoadContent()载入字体资源(如果有可能在这里做画图的初始化工作,计算坐标等,因为在这里载入字体资源后才能得到字体的大小,才能够算出字符串所占像素数。)
  -----------------
  Tips:
  1. this.Content.Load(“spriteFontName”)
  Content是ContentManager的引用,用于Load资源。
  2. Vector2 SpriteFont.MeatureString(string str)
  可以得到字符串像素大小。
  3. this.GraphicsDevice.Viewport
  可以得到屏幕可操作的区域大小,及起始点(0,0),另外屏幕左上角是(0,0)点
  -----------------
  然后程序会运行Update,Draw,Update,Draw…两个函数循环执行。
  因此在Update的时候做逻辑运算,在Draw的时候画图。
  ------------------
  Tips:
  1. 由于垃圾回收会占用资源,影响效率,因此在XNA程序中struct会被更频繁的用到(C#中sruct是栈分配内存且做内存拷贝)
  2. 处于对第一点的考虑,在Update函数中尽量不要调用new来在堆上构造class.
  3. Draw的时候利用SpriteBatch做画图操作。具体的画图语句应该包含在SpriteBatch.Begin()和SpriteBatch.End()之间
  如:
  protected override void Draw(GameTime gameTime)   
{   
    GraphicsDevice.Clear(Color.Navy);
  
    spriteBatch.Begin();   
    spriteBatch.DrawString(segoe14, text, textPosition, Color.White);   
    spriteBatch.End();
  
    base.Draw(gameTime);   
}
  ------------------
  
  最后,作者为下一章做了铺垫。
  在Silverlight中屏幕的默认方向是Portrait,XNA方向是LandscapeRight的。
  下一章将介绍屏幕方向的问题。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-66175-1-1.html 上篇帖子: windows 7 64位中使用32位的mysql odbc 下篇帖子: 添加游戏对象到 Windows 7 游戏管理器中。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表