前言微信小程序提供了丰富的设备能力 API让应用可以获取手机硬件传感器数据实现触摸之外的更多交互方式。其中wx.onAccelerometerChange加速计监听接口可以实时获取手机三轴加速度信息基于该能力可以开发摇一摇、体感交互类场景。本文将实现一款变脸交互小程序支持点击图片切换脸谱、摇晃手机触发变脸两种交互模式同时统计并展示累计变脸次数完整演示加速计 API 的使用流程、事件绑定、数据渲染与业务逻辑封装。开发环境微信开发者工具Skyline 渲染模式原生小程序不使用云服务。实现效果页面展示脸谱图像点击图像随机切换一张脸谱累计变脸数字自增摇晃手机触发加速计事件弹出 Toast 提示 “摇一摇成功”同时随机更换脸谱累计变脸次数同步更新页面底部实时展示累计变脸总次数两种交互行为都会进行计数统计。核心 API 介绍wx.onAccelerometerChange(function listener)监听加速度数据事件。回调函数返回 res 对象包含x、y、z三个轴的加速度值。手机晃动时三轴数值会发生明显波动我们可以设定阈值来识别摇晃动作。res.xx 轴加速度res.yy 轴加速度res.zz 轴加速度注意小程序模拟器无法模拟传感器数据摇晃交互必须在真机调试下才可以看到完整效果。项目结构设计face‑game ├─images # 脸谱资源1.png ~14.png共14张脸谱图片 ├─pages │ └─index │ ├─index.wxml 页面结构 │ ├─index.wxss 页面局部样式 │ └─index.js 业务逻辑、传感器监听、数据处理 ├─app.json # 全局配置、渲染模式配置 └─app.wxss # 全局公共样式完整代码实现1. app.json 全局配置配置页面路由、导航栏样式以及 Skyline 渲染相关参数。{ pages: [ pages/index/index ], window: { navigationBarTextStyle: black, navigationStyle: custom }, style: v2, renderer: skyline, rendererOptions: { skyline: { defaultDisplayBlock: true, defaultContentBox: true, tagNameStyleIsolation: legacy, disableABTest: true, sdkVersionBegin: 3.0.0, sdkVersionEnd: 15.255.255 } }, componentFramework: glass‑easel, sitemapLocation: sitemap.json, lazyCodeLoading: requiredComponents }2. index.wxml 页面结构使用image组件展示脸谱绑定点击 tap 事件增加视图展示累计变脸次数。navigation-bar title变脸游戏 back{{false}} colorblack background#FFF/navigation-bar scroll-view classscrollarea scroll-y typelist view classbox view classtitlewx.onAccelerometerChange示例/view image src{{faces[index]}} modewidthFix bind:tapchangeFace / view classcount-text累计变脸总次数{{totalCount}}/view /view /scroll-view3. index.wxss 页面样式/**index.wxss**/ page { height: 100vh; display: flex; flex-direction: column; } .scrollarea { flex: 1; overflow-y: hidden; } image { margin: 20rpx; } .count-text { font-size:40rpx; color:rebeccapurple; text-align:center; margin-top:30rpx; font-weight:bold; }4. app.wxss 全局公共样式.title { padding: 20rpx; border: 2rpx solid purple; font-size: 40rpx; font-weight: bolder; text-align: center; margin-bottom: 30rpx; color: rebeccapurple; }5. index.js 业务逻辑核心data 中定义脸谱图片数组、当前图片索引、变脸计数字段封装工具函数生成随机索引用于随机切换脸谱changeFace 方法切换脸谱同时完成计数累加onShow 生命周期中注册加速计监听判断三轴加速度阈值识别摇晃动作。Page({ data: { index: 0, totalCount: 0, faces: [ /images/1.png, /images/2.png, /images/3.png, /images/4.png, /images/5.png, /images/6.png, /images/7.png, /images/8.png, /images/9.png, /images/10.png, /images/11.png, /images/12.png, /images/13.png, /images/14.png ] }, // 生成 [0,n) 的随机索引 createRandomIndex(n) { return Math.floor(Math.random() * n) }, // 切换脸谱同时累加变脸次数 changeFace() { this.setData({ index: this.createRandomIndex(this.data.faces.length), totalCount: this.data.totalCount 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 }) } }) } })关键技术点解析1、随机索引生成Math.random()生成[0,1)浮点数乘以数组长度 n再通过Math.floor()向下取整得到 0 到 n‑1 之间的合法数组下标实现随机选取脸谱。2、加速计摇晃判断逻辑wx.onAccelerometerChange会高频持续回调传感器数据当手机产生摇晃动作x/y/z 轴加速度会超过设定阈值 0.5此时判定为摇晃执行变脸逻辑。实际项目中可以增加防抖处理避免短时间内多次摇晃重复触发变脸。3、数据驱动视图小程序采用 MVVM 模式通过this.setData()修改index控制图片渲染修改totalCount更新页面计数视图自动响应数据变化。点击图片、摇晃手机两套入口共用同一个changeFace函数保证计数逻辑统一。踩坑与优化建议传感器仅真机有效微信开发者工具模拟器无法模拟加速计摇一摇效果必须使用真机调试预览。监听事件释放当前示例中onShow注册监听多次打开页面会重复绑定监听事件。正式项目建议在onHide中调用wx.offAccelerometerChange()取消监听防止事件多次触发。防抖优化加速计回调频率很高快速摇晃会连续触发变脸可以增加时间戳防抖限制最短触发间隔。图片资源图片较多时建议压缩图片体积减少小程序包体积。拓展方向基于加速计 API 还可以拓展更多玩法增加分数逻辑记录最高变脸分数增加动画效果变脸时添加过渡动画结合本地存储把累计次数持久化退出小程序再次打开不会清零。总结wx.onAccelerometerChange是小程序设备能力中非常典型的传感器 API它把手机硬件能力开放给前端打破了单纯点击交互的局限。本案例把传感器事件、页面点击事件封装到同一个业务方法实现了两套交互入口同时利用小程序的数据绑定完成状态展示。对于体感小游戏、摇一摇营销类场景这套开发思路具备很好的参考价值。
企业数字化 ERP 产品动态
相关推荐
iPad无纸化文献阅读工具有哪些?2026年4款实测,手写翻译同步谁最强 📌 TL;DR你是否遇到过这些场景?iPad 上读双栏论文,字小到瞎,缩放半天读不了三段;手写批注和翻译不能兼得——手写好的没翻译,有翻译的手写弱;电脑上标的重点,iPad 上打开笔记全没了&… · 2026/11/3 12:45:42
物业公司上系统前必须问的 5 个问题:第 4 个我用 3 段脚本量了一遍 我做了什么
我把物业上系统前该问的 5 个问题各写了一段能跑的脚本去验:导出的数据能不能在空库里重建、断网那半小时的记录能不能查出来、改一次收费规则要动几行、收一笔物业费一线要敲几个字段。第 4 个的量法最笨也最有效——让收费员当面收一笔钱,计… · 2026/11/3 8:22:58
AI时代技能折旧加速:收藏这份指南,助你成为不可替代的职场人! AI正重塑职场,新岗位涌现,传统岗位技能变迁。企业需求从“学过AI的人”转向“能用AI解决业务问题的人”,强调人机协作、专业融合及业务重构能力。AI加速技能折旧,个人需提升学习能力、跨领域理解和工具应用能力。资深职场人应成为… · 2026/11/10 14:50:14
电工证现在还用年检吗官方报名入口在哪 电工证现在还用年检吗官方报名入口在哪 学历不高怕报不上名?别慌,电工证现在还用年检吗,官方报名入口其实就在你家门口,别被“复杂流程”吓退了,这篇文章给你讲清楚。 电工证现在还用年检吗?2024年最新政策解读… · 2026/11/11 7:57:15
扬州市电工证办理地点千万别踩坑,别再被中介忽悠了 扬州市电工证办理地点千万别踩坑,别再被中介忽悠了 你是不是正被“扬州市电工证办理地点”这几个字搞得一头雾水?是不是担心找错了地方,被中介坑了钱还拿不到证?别急,今天我给你把门儿说清楚, 千万别踩坑 ,帮你避开那些坑,稳稳拿到电工证。… · 2026/11/11 7:57:15
中年考电工证建议怎么报名才能避免证书过期问题 中年考电工证建议怎么报名才能避免证书过期问题 证书过期了不知道怎么复审延期?很多中年电工朋友都在为这个问题头疼。尤其是高压电工证、低压电工证这些关键证书,一旦过期就等于失去执业资格,甚至可能面临法律责任。本文结合焦作地区培训机构学员的真实案… · 2026/11/11 7:57:15
特种工证要年审吗 2026河南最新政策解读怕考不过白交培训费 特种工证要年审吗 2026河南最新政策解读怕考不过白交培训费 怕考不过白交培训费?2026年河南最新政策来了,特种工证要年审吗?这个话题直接关系到你的钱包和职业发展。今天就从一个真实案例说起,带你搞清楚特种工证的年审流程、考试注意事项和后续… · 2026/11/11 7:57:15
中年考电工证建议2026河南最新政策怎么走 中年考电工证建议2026河南最新政策怎么走 你是不是也正为“ 中年考电工证建议 ”发愁?不知道去哪报名,怕被中介坑,又担心证书不被认可?2026年河南最新政策对电工证报考、考试和复审都做了新调整,尤其对 中年考电工证建议… · 2026/11/11 7:57:15
哪些行业有特种工证合格标准与通过率 之前考的证在外省能不能转过来?特种工证跨省转移全攻略 之前考的证在外省能不能转过来?这几乎是每个考过特种作业证的学员都会问的问题。特别是像电工作业、焊接与热切割作业、高处作业等岗位,很多人在外地打工,考了证后又回到家乡发展,这时候就面临一个… · 2026/11/11 7:56:15
电工证丢失还能补吗?千万别踩坑,丢了证等于失业 电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。… · 2026/11/10 2:16:10
电力电缆作业证直播报名入口与办理流程良心建议 电力电缆作业证直播报名入口与办理流程良心建议 你是不是也担心学历不高报不了名?别急,今天就给你讲讲 电力电缆作业证直播 的报名流程和那些你必须知道的干货, 良心建议 在这里,别错过。 电力电缆作业证直播报名需要什么条件?… · 2026/11/10 17:46:39
英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 怕考不过白交培训费?英德电工证报考费多少钱,你真的了解吗?现在市面上培训机构五花八门,价格参差不齐,很多人一不小心就花了冤枉钱,结果还考不过。别急,今天就来给你说清楚英德电工证的… · 2026/11/10 17:11:43
_中职电工证最新政策解读 中职电工证在哪考?工地太忙根本没时间复习考试的救星来了 工地太忙根本没时间复习考试,这是很多正在备考 中职电工证 的建筑工友的真实写照。你不是不想考,而是真的没时间。但别担心,这期内容是 新乡初次报考人员… · 2026/11/11 0:00:52
昆明电工证培训价格值不值得考?老电工告诉你真相 昆明电工证培训价格值不值得考?老电工告诉你真相 之前考的证在外省能不能转过来?这个问题是很多在外地打工、换城市生活、或者是想在昆明发展的朋友最关心的。尤其是现在云南发展快,很多企业都在招持证上岗的电工,如果你手头有证但不在本地,那这个证是不… · 2026/11/11 0:00:52
特种电缆张工网上查询全攻略:外省证如何转过来 特种电缆张工网上查询全攻略:外省证如何转过来 之前考的证在外省能不能转过来?这是很多特种作业从业者最关心的问题,尤其是像特种电缆张工这类证书,直接关系到日常工作是否合规、能否顺利晋升。很多小伙伴因为证书归属地的问题,陷入职业发展的瓶颈,甚至… · 2026/11/11 0:00:52
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/10 20:19:29
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/10 19:22:45
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/10 17:00:47