1.4 “一秒钟有多长”小游戏

经过1.2节的学习,读者应该已经下载安装了微信Web开发者工具,并且了解了常用的操作。本节开发一个名为“一秒钟有多长”的小程序,带领大家领略一下小程序的开发流程。

1.4.1 游戏规则

你能精确按出一秒钟吗?用手指按住屏幕,感觉一秒钟到了松开,看看是否为精确的一秒钟。

游戏的操作规则是:

用户手指放到圆形按钮上,触发touchstart事件,此时记下开始时间start_time。

用户手指离开圆形按钮时,触发touchend事件,此时记下结束时间end_time。

计算用户操作圆形按钮的时间差,与一秒钟相比较,根据不同的误差显示不同的文案。游戏界面如图1-15所示。

图1-15

1.4.2 下载与运行

本DEMO可以在weixinbook.net网站免费下载,下载后将ch01/1sec解压到本地目录。

打开微信Web开发者工具,单击“添加项目”,进入“添加项目”页面,如图1-16所示。

图1-16

AppID选择“无AppID”,项目名称填写“1sec”(也可以随意填写),项目目录选择上述解压目录,单击“添加项目”即可打开,如图1-17所示。

图1-17

此后如无特殊说明,各章节的示例程序都可以用这种方法打开。

下面用小程序开发工具实现这个小游戏,领略移动端开发的最新技术。

1.4.3 界面、样式与脚本

游戏界面如图1-17所示,页面顶部是文本形式的游戏介绍:

一秒钟有多长?

你能精确地按出一秒钟吗?

中间是玩法介绍:

拇指放在圆圈上。

Ready? Go!

底部是一个橘色圆形按钮。

    源码pages/index/index.wxml

{{result}}的数据来自对应Page的data。

catchtouchstart与catchtouchend分别绑定touchstart和touchend事件的处理函数。icon标签展示一个橘色的圆。

对应的样式文件如下:

    源码pages/index/index .wxss

JS脚本

catchtouchstart与catchtouchend分别绑定touchstart和touchend事件的处理函数。前者是一个触摸事件的起始事件,后者是该触摸事件的结束事件。

在touchstart事件里,记录开始时间start_time。

在touchend事件里,记录结束时间end_time。

计算start_time与end_time之间的时间差,与一秒钟相比较,根据不同的误差显示不同的文案(见表1-1)。

表1-1 文案

    源码pages/index/index.js

第34到36行显示文案的操作如下:

通过操作data属性的result字段改变{{result}}里的显示内容。

综上所述,我们用小程序框架实现了一个“一秒钟有多长”小游戏。这个框架类似于React Native和Vue.js等非常流行的移动网页开发MVVM类型的框架,我们将在第2章详细讲解这个框架。