news 2026/11/6 7:45:56

微信小程序练习:变脸游戏

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
微信小程序练习:变脸游戏

一、案例描述

设计一个小程序,演示wx.onAccelerometerChange的功能和使用方法。小程序运行后页面上出现一张脸谱画面;点击脸谱时画面随机切换;摇晃手机时显示消息框同时画面也随机切换,实现"变脸"效果。

二、实现思路

  1. 用<image src="{{faces[index]}}" bind:tap="changeFace" />展示当前脸谱,点击触发changeFace让 index 变为随机下标。
  2. data.faces存储多张脸谱图片路径(课件用 14 张),createRandomIndex(n)工具函数生成[0, n)的随机整数。
  3. 在onShow中注册wx.onAccelerometerChange监听器,当加速度x/y/z任一方向绝对值大于 0.5 时触发变脸并wx.showToast提示。
  4. 扩展:新增count字段记录累计变脸次数,changeFace每次自增,页面<view>显示{{count}}实时更新。

三、核心代码

index.wxml

<viewclass="title">wx.onAccelerometerChange示例</view><imagesrc="{{faces[index]}}"mode="widthFix"bind:tap="changeFace"/><!-- 功能扩展:动态显示累计变脸次数 --><viewclass="count-text">累计变脸总次数:{{count}}</view>

index.js

Page({data:{index:0,faces:['/images/01.png','/images/02.png','/images/03.png','/images/04.png','/images/05.png','/images/06.png','/images/07.png','/images/08.png','/images/09.png','/images/10.png','/images/11.png','/images/12.png','/images/13.png','/images/14.png'],count:0// 功能扩展},createRandomIndex(n){returnMath.floor(Math.random()*n)},changeFace(){this.setData({index:this.createRandomIndex(this.data.faces.length),count:this.data.count+1// 功能扩展:次数累加})},onShow(){wx.onAccelerometerChange((res)=>{if(res.x>0.5||res.y>0.5||res.z>0.5){this.changeFace()wx.showToast({title:'摇一摇成功',icon:'success',duration:5000})}})}})

四、关键知识点

  • wx.onAccelerometerChange:监听加速度数据变化,回调参数res含x/y/z三个方向的加速度值(单位 g)。
  • Math.random():产生[0, 1)的随机数,结合Math.floor得到随机整数下标。
  • 事件绑定:image的bind:tap绑定点击事件,onShow中注册加速计监听。
  • setData 响应式更新:变脸时同时更新index和count,视图自动刷新。

五、功能扩展

在课件基础上:

  1. data 中新增count: 0;
  2. changeFace中同时做count: this.data.count + 1;
  3. WXML 中新增<view class="count-text">累计变脸总次数:{{count}}</view>。
    运行时每次点击或摇一摇触发变脸,次数同步自增并实时显示,与课件中"累计变脸总次数:5"的效果一致。

六、总结

本案例把"点击变脸"和"摇一摇变脸"两种交互方式串在一起,展示了wx.onAccelerometerChange这个设备 API 的典型用法,并通过累计变脸次数的实时显示完成了功能扩展。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/6 7:43:00

没有 TPM 2.0 也能装 Windows 11:MediaCreationTool.bat 快速上手指南

没有 TPM 2.0 也能装 Windows 11&#xff1a;MediaCreationTool.bat 快速上手指南 【免费下载链接】MediaCreationTool.bat Universal MCT wrapper script for all Windows 10/11 versions from 1507 to 21H2! 项目地址: https://gitcode.com/gh_mirrors/me/MediaCreationToo…

作者头像 李华
网站建设 2026/11/6 7:41:55

Ruffle 桌面版实操指南:从装好到稳定播放本地 SWF 的完整流程

Ruffle 桌面版实操指南&#xff1a;从装好到稳定播放本地 SWF 的完整流程 【免费下载链接】ruffle A Flash Player emulator written in Rust 项目地址: https://gitcode.com/GitHub_Trending/ru/ruffle Ruffle 是一个用 Rust 重写的 Adobe Flash Player 模拟器&#xf…

作者头像 李华
网站建设 2026/11/6 7:30:27

OpenCV 高级 001-图像修复

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/6 7:29:34

996引擎 -地图-添加安全区+回城点

996引擎 -地图-添加安全区+回城点 文件位置 配置 cfg_startpoint.xls 特效效果 1 3 4 5 回城卷的规则 参考资料 文件位置 文件 位置 服务端 D:\996M2-lua\MirServer-lua\Mir200 客户端 D:\996M2-lua\996M2_debug\dev 配置 cfg_startpoint.xls 服务端\Mir200\Envir\DATA\cfg_st…

作者头像 李华
网站建设 2026/11/6 7:25:12

嵌入式内存管理实战指南:从分配到排查OOM

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华