![微信小程序开发详解](https://wfqqreader-1252317822.image.myqcloud.com/cover/787/920787/b_920787.jpg)
1.4 “一秒钟有多长”小游戏
经过1.2节的学习,读者应该已经下载安装了微信Web开发者工具,并且了解了常用的操作。本节开发一个名为“一秒钟有多长”的小程序,带领大家领略一下小程序的开发流程。
1.4.1 游戏规则
你能精确按出一秒钟吗?用手指按住屏幕,感觉一秒钟到了松开,看看是否为精确的一秒钟。
游戏的操作规则是:
用户手指放到圆形按钮上,触发touchstart事件,此时记下开始时间start_time。
用户手指离开圆形按钮时,触发touchend事件,此时记下结束时间end_time。
计算用户操作圆形按钮的时间差,与一秒钟相比较,根据不同的误差显示不同的文案。游戏界面如图1-15所示。
![](https://epubservercos.yuewen.com/BBB3D8/10150113803178501/epubprivate/OEBPS/Images/image-0015.jpg?sign=1739124385-ZHAz2mrlCf72HMcgYdCj16ccUV4NnYtt-0-7267808e34730edb7cbd4cf2b3326b4b)
图1-15
1.4.2 下载与运行
本DEMO可以在weixinbook.net网站免费下载,下载后将ch01/1sec解压到本地目录。
打开微信Web开发者工具,单击“添加项目”,进入“添加项目”页面,如图1-16所示。
![](https://epubservercos.yuewen.com/BBB3D8/10150113803178501/epubprivate/OEBPS/Images/image-0016.jpg?sign=1739124385-iF9wDr6aSAgJRlQnpBokdUQi8vy6sqnh-0-75a6aa5e6889c66b1246037cd7d58245)
图1-16
AppID选择“无AppID”,项目名称填写“1sec”(也可以随意填写),项目目录选择上述解压目录,单击“添加项目”即可打开,如图1-17所示。
![](https://epubservercos.yuewen.com/BBB3D8/10150113803178501/epubprivate/OEBPS/Images/image-0017.jpg?sign=1739124385-PFbcVls1AHHgh2RyOGqhMBqqcDlOoyv3-0-524b4b6a08a41e0d42f13832a4499234)
图1-17
此后如无特殊说明,各章节的示例程序都可以用这种方法打开。
下面用小程序开发工具实现这个小游戏,领略移动端开发的最新技术。
1.4.3 界面、样式与脚本
游戏界面如图1-17所示,页面顶部是文本形式的游戏介绍:
一秒钟有多长?
你能精确地按出一秒钟吗?
中间是玩法介绍:
拇指放在圆圈上。
Ready? Go!
底部是一个橘色圆形按钮。
源码pages/index/index.wxml
![](https://epubservercos.yuewen.com/BBB3D8/10150113803178501/epubprivate/OEBPS/Images/image-0018.jpg?sign=1739124385-UdvnuQdKz3kHpnsG93ZJ4q9fVA1vUmZi-0-5ac695911a7d6b57942054c471871a72)
{{result}}的数据来自对应Page的data。
catchtouchstart与catchtouchend分别绑定touchstart和touchend事件的处理函数。icon标签展示一个橘色的圆。
对应的样式文件如下:
源码pages/index/index .wxss
![](https://epubservercos.yuewen.com/BBB3D8/10150113803178501/epubprivate/OEBPS/Images/image-0019.jpg?sign=1739124385-xCTdEinWsjrF2RftVZeLJluCkNoSNfTi-0-4d782d6e7c5e21b69703f08730e1b659)
JS脚本
catchtouchstart与catchtouchend分别绑定touchstart和touchend事件的处理函数。前者是一个触摸事件的起始事件,后者是该触摸事件的结束事件。
在touchstart事件里,记录开始时间start_time。
在touchend事件里,记录结束时间end_time。
计算start_time与end_time之间的时间差,与一秒钟相比较,根据不同的误差显示不同的文案(见表1-1)。
表1-1 文案
![](https://epubservercos.yuewen.com/BBB3D8/10150113803178501/epubprivate/OEBPS/Images/image-0021.jpg?sign=1739124385-E8oUmsD3RZO4YJwqDiDgwI7ZX5yFt2n5-0-52baf9abe2ed6205830143d0bfe2f4c4)
源码pages/index/index.js
![](https://epubservercos.yuewen.com/BBB3D8/10150113803178501/epubprivate/OEBPS/Images/image-0020.jpg?sign=1739124385-x3a2JJUVnTfcwN67wjWHNL7axVJRDu7L-0-1ca220663ea63eb1647c5251598a2bd9)
![](https://epubservercos.yuewen.com/BBB3D8/10150113803178501/epubprivate/OEBPS/Images/image-0022.jpg?sign=1739124385-cqN4Dj1YcuX2VrwZOAip8jPlxf5FGZR1-0-df8b60188c1db5fb62850d67ca8a7d08)
第34到36行显示文案的操作如下:
![](https://epubservercos.yuewen.com/BBB3D8/10150113803178501/epubprivate/OEBPS/Images/image-0023.jpg?sign=1739124385-NQC17xQww0NC7NFMHgByBwnnQ3XfFyC1-0-ed50c1369e109081fc61f7bdaf288ddf)
通过操作data属性的result字段改变{{result}}里的显示内容。
综上所述,我们用小程序框架实现了一个“一秒钟有多长”小游戏。这个框架类似于React Native和Vue.js等非常流行的移动网页开发MVVM类型的框架,我们将在第2章详细讲解这个框架。