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

win8 开发之旅(13)

[复制链接]

尚未签到

发表于 2015-5-20 10:38:28 | 显示全部楼层 |阅读模式
  首先,注明:以下的对话,纯属虚构。如有雷同,纯属巧合。
  人物介绍:Webabcd大师——江湖人称姓王名磊,微软的mvp(最有价值专家),。net界一等一的高手。小曾——silverlight小白。
  时间地点:2012年9月的一天,在一次北京举行的.net爱好者的聚会上。webabcd大师,做了一个关于的silverlight的演讲的以后,与会人员自由交流之时。
  首先,大师之所以是大师,不仅仅是因为是在技术水平的登峰造极。而且是因为其做人生修为上的高山仰止。所以,这位大师不知疲倦的解开了小曾这个silverlight小白关于一个win8上打地鼠这个小游戏的16个疑惑。
  小曾:⑴webabcd大师,我要做这个打地鼠的这个游戏,可是没有老鼠的头像,你怎么看?
  webabcd:首先,你如果想不用图片的话,可以用silverlight原生态的语言来画图,silverlight本来就能有画图的功能。象著名的玩具总动员的人物,动画都有一个silverlight版本。当然,一般的初学者用图片等素材替代就可以了。
  小曾:⑵webabcd大师,我看电脑版和其他的移动设备(android,ios)上游戏的都有音效的效果,如果我想这个游戏,有音效的效果,难道用silverlight来编音效的代码。你怎么看?
  webacbd:首先:通过源代码来实现音效是非常愚蠢做法。当然,silverlight中播放音效,有它自己的解决法案。通过mediaElement和MediaLength控件来播放。我们参看msdn:


  表示包含音频和/或视频的控件。


  小曾:⑶哦,原来这样啊!我如果要写这个小游戏是不是要写一个老鼠类,可是老鼠这个类最终要显示到页面上去。这么做很烦。webabcd大师,你怎么看?
  webabcd:首先,对你有这种思想,我要批评你,编程不要有怕麻烦的思想。这是必须要做的,当然,你不想这么做,你可以这个老鼠类用一个用户控件来表示了,这样你不用写两个类了。但是,微软这种做法,有它的弊端,就是使人面向对象的思维能力降低了。但是,请您记住,你如果想从一个小菜变成一个大牛的话,最好是用面向对象的来思考,最好是用mvvm的架构来写这个项目。如果你要快速开发的就用做用户控件的方法就可以了。
小曾:(4)咦,我知道mvc,MVp的设计模式。mvvm。。。,你怎么看?
webabcd:你知道这些,我还是比较的欣慰。。因为说明你可能有点面向对象的基础,至于你问道的什么是MVVm,他是mvp的一个进化,过去mvc用图是这么表示的:
DSC0000.jpg
  而MVVM的用图形是这么表示的:

DSC0001.jpg
  他们的本质都是实现表示层和逻辑代码的解耦,你看这两个图,mvvm中的viewmodel 能够接受来自service的结果,这对于mvc来说更加的灵活。
  小曾:⑸我这个打地鼠的游戏怎么用mvvm来架构。
  webabcd:大概思路是这样的,你可以抽取两个简单model对象,一个mouse对象,一个HitModel对象,这对应的hitmodel对象接受的service是打击这个方法。 绑定,就绑定这个方法。
  小曾:⑹架构我是有了,我们在讨论点xaml的语言的实质点的东西。如果是这个小游戏,一定要做老鼠进洞出洞的动画,你怎么看?
  webabcd:这个好办,xaml中提供了一个storyboard的类的就是专门做动画的。
  小曾:⑺我一看着storyboard哪些参数就头大,webabcd大师,你怎么看?
  webabcd:这些什么头大的,我们先看看微软的解释:
Storyboard 类




  为容器的子动画提供对象和属性目标信息的容器时间线。你可能常用到的是他的子类DoubleAnimationUsingKeyFrames,EasingDoubleKeyFrame类,你看看下面的源代码吧

  

















  这段源代码一个老鼠进洞的动画,首先动画的作用于的目标的控件是mouse的这个控件,他改变的值是子控件的y轴的值,动画持续的时间是0.4秒,作用的值是40,他动画的效果是进行动画处理之前略微收回动画的动作。你是不是有一点基本的明白了。
  小曾:⑽好,我视乎有点懂了。那我做这个游戏,时候有时会出现这个错误:
  错误 1 无法将“Mouse”添加到集合属性“Children”中, 类型必须为“UIElement” C:\Users\admin\Documents\Visual Studio 2012\Projects\ZCWMoleAttack\MoleAttack\Hole.xaml 49 10 MoleAttack ,
  webabcd:呃呃呃!这个问题 把ctrl-namespace:变成using 前者是老写法,win8只支持后者。
  小曾:⑾我还有个问题要问,win8不支持mouseLeftButtonDown,你怎么看
  webabcd:你可以用Tapped事件来替代。
  小曾:⑿如果要要用MouseMove事件,你怎么看?
  webabcd:你可以用PointerMove事件替代
  小曾:⒀在就是,有关算法的问题,如何来进行碰撞检测了,你怎么看?
  webabcd:silverlight有个rectangle控件中有个insectwith这个方法,能够判断两个控件是否碰撞。
  小曾:⒁对于不同的老鼠随机钻出洞方法,你怎么看?
  webabcd:可以用random函数解决了,当然你想要更加的随机的话,new Random(datetime.Now.Millseconds);这样子 产生的随机数更加的随机
  小曾:⒂树洞这样的类,你怎么看?
  webabcd:树洞这样的类,是非重要的类,可以用用户控件解决,做把做Mouse,hitModel这样的的类添加到这个控件上,交由一个GameMain的用户控件处理相应的逻辑。
  小曾:⒃老鼠被打后,得分,你怎么看?
  webabcd:这个可以通过一个score事件来实现老鼠被打后,得分的效果。
  小曾:谢谢,webabcd大师答疑解惑。
  webabcd:不用谢,非常乐意 与他人分享知识吗。
  想看看一下他内部的结构吗,请猛击:http://51aspx.com/Code/Win8GophersGame

运维网声明 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-68820-1-1.html 上篇帖子: 手把手教你:亲手打造Silverlight的Win8 Metro外观(3) 子菜单项 下篇帖子: Win8 Metro App里玩XNA:移植XNA游戏到Win8
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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