这一系列文章将告诉你如何创建一个简单的Windows 8的比赛中,使用HTML5,JavaScript的,WinJS和CreateJS 。
该游戏是基于XNA游戏示例“弹弓战争实验室” 。 因为我们开发是基于网络技术为Windows 8的新版本,我们会从游戏重用的资产。
在这篇文章中,我们将响应用户的输入,并通过添加声音让事情变得更活泼一点。
处理用户输入
当然有很多方面,我们可以有针对拍摄工作 - 随机的,基于时间的,精密型(如“点击...现在!”),但在这种情况下,我们将让用户画一条线指示方向和速度。
首先,让我们添加的附近上方新的变量default.js :
Windows 8中支持多种方式吸引用户 - 鼠标,触控笔 - 我们的游戏需要足够灵活,以取其用户有支持。 幸运的是, MSPointer系统结合了所有的这些支持为一体。 我们将使用MSPointerDown/Up开始和结束瞄准,加上MSPointerMove为用户调整的目标提供反馈。
顺便说一句,这里还有通过大力支持MSGesture用于检测手势,如单击,双击抽头等一个很好的例子,用于处理输入和手势是“BallInEight”样品上MSDN。
这些事件由指向听者功能,当它们触发一个叫做使用。 让我们来照顾,现在,加上靠近顶部initialize()函数:
现在对于自己的功能:添加你喜欢的地方,但我把之间update()和fireShot()
注意练习的离开了这里。 为了简单起见,我省略了示出具有目的%文本和/或期间将瞄准箭头adjustAim()函数。 来吧,尝试添加 - 从早期的部分,我们已经在使用,你需要非常相同的技术。
并帮助函数计算我们的宗旨:
再次,简单规则的一天,这只是针对玩家1,但在这里发生的事情:
- 行239-241 -创建一个新的
Point,从开始到结束,从距离Point秒。 它缩小到一个很好的速度每帧/更新申请。 - 行242 244 -确保
x和y有限,出手并不简单地消失在屏幕上,去得太快 - 行243 245 -确保镜头会朝敌人...更多或更少。
前面我们增加了一些临时代码update()有球员总是1随机开火。 现在,我们可以替换使用新aimVector :
来吧,运行游戏...
现在你可以使用鼠标,笔,或触摸来控制出手了!
“我一定要听到的东西!” - 添加声音
我们作为一个游戏开发工作尚未完成,直到我们有一些声音。 我们已经添加了声音文件早在第2部分 ,从而让我们通过加载他们的下一个步骤。
首先,在几个变量default.js以保持整洁:
回想一下第2部分 ,我们已经连接好PreloadJS ,以确保我们的资源准备的游戏开始的时候? 我们可以使用与声音同样的方法,让我们将它们添加到清单:
要使用这些文件,我们将创建HTML的情况下, audio元素。 长话短说,如果你简单地创建每个声音文件一个音频实例,你可能会因为一个声音是失败实例完成的前戏之前玩碰上裁剪。 有处理这一几种方法(例如,参见“HTML5音频和JavaScript控制” ),但我们会尽用我们每播放一个声音一个时刻的简单和低效率的事情。
请注意,我们不会使用SoundJS在这个例子(其它CreateJS的一部分),但当然欢迎您把它兜风!
添加playSound(file)的辅助功能:
而已! 现在,我们只需要调用它,指定固定指向正确的文件。 我们将在几个地方做。
首先,加入到呼叫fireShot()
现在, processHit()
作为注解中提到的,你可以用“打”的声音,而不是“爆炸”,如果你想拥有它需要多个命中摧毁一个弹射器。
最后,游戏结束输赢声音endGame()
来吧,给它一个运行尝试的事情了。
游戏......等等......等等......
恭喜! 你已经做了一个游戏!
我们已经介绍了很多的理由在这些职位,但像什么,还有很多其他的东西去尝试。 为什么不采取一些他们的刺?
- 屏幕调整 - 人像/风景,厉声/填充。 一个伟大的机会了解CSS媒体查询!
- 提高触摸/手势支持
- 精灵/动画 - 射击命中/缺失,弹射器的回调/火,弹射破坏
- 游戏动态 - 添加风,新场景,新的弹射器的功能/升级,在弹药的选择,等等。
- 添加了一座山,移动的云背景(资产已经存在)
- 一些情报加入目前非常人工智能
- 考虑使用动态磁贴 - 也许显示玩家的最后一个/高分?
请享用! 期待着听到您添加真棒新的东西!
From: https://www.sitepoint.com//creating-a-simple-windows-8-game-with-javascript-input-and-sound/