尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

EXOR HMI控件动画开发实战:从零实现一个旋转加载动画

EXOR HMI控件动画开发实战:从零实现一个旋转加载动画
📅 发布时间:2026/7/2 12:21:12

大家好,我是宏集科技鲁工,给大家分享不一样的工业物联网信息!

最近做了一个风车旋转的小demo,有朋友问我EXOR HMI里怎么实现控件的动画效果。其实很简单,JMobile Studio提供了强大的脚本引擎,通过JavaScript我们可以轻松控制控件的各种属性,包括旋转、平移、缩放等等。今天就以这个风车demo为例,带大家一步步实现控件的自定义动画效果。

一、Demo效果展示

这个demo实现了一个四色风车的旋转动画,页面上有四个按钮,可以分别控制风车正转、反转、高速旋转和低速旋转。效果就像下面这个动图一样。

二、页面搭建

首先在JMobile Studio的页面编辑器中,拖入一个Image图像控件,点击导入一张风车的PNG图片。图片最好是正方形的,旋转中心就在图片正中心,转起来才不会偏移。

1. 添加四个控制按钮

再拖入四个标准按钮控件,按钮上的文字分别设置为"正转"、"反转"、"高速"、"低速"。按钮的位置可以根据自己的喜好排列在风车下方或右侧。

2. 页面整体布局

调整好控件大小和位置,风车放在页面中间偏上的位置,四个按钮整齐排列在下方,整体界面保持简洁清晰。

三、核心脚本实现

接下来是最关键的部分,我们通过JavaScript脚本来控制风车的旋转。在JMobile Studio中打开脚本编辑器,写入以下代码:

//默认速度和方向 var speed = 20; var direction = 1; var timer = page.setInterval(rotation, 50); function rotation(){ var wgt = page.getWidget("ImageWgt1"); var angel = wgt.getProperty("rot"); angel = angel + direction*speed; wgt.setProperty("rot", angel); } //正向旋转 function BtnStd1_btn_onMouseClick(me, eventInfo) { direction = 1; } //反向旋转 function BtnStd2_btn_onMouseClick(me, eventInfo) { direction = -1; } //高速旋转 function BtnStd3_btn_onMouseClick(me, eventInfo) { speed = 30; } //低速旋转 function BtnStd4_btn_onMouseClick(me, eventInfo) { speed = 10; }

1. 定义两个全局变量,speed表示旋转速度,数值越大转得越快;direction表示旋转方向,1是正转,-1是反转。初始设置速度为20,方向为正转。

2. 使用page.setInterval()函数设置一个定时器,每隔50毫秒执行一次rotation函数。在rotation函数中,先通过page.getWidget()函数获取到风车图片控件的所有属性,然后读取它当前的旋转角度属性"rot",再根据速度和方向计算新的角度,最后把新角度写回去,这样风车就转起来了。

3. 接下来是四个按钮的点击事件函数:

正转按钮点击时,把direction设为1

反转按钮点击时,把direction设为-1

高速按钮点击时,把speed设为30

低速按钮点击时,把speed设为10

这里需要说明一下,speed变量控制每次旋转增加的角度值,speed越小,每次旋转增加的角度也越小,转起来就越慢;speed越大,每次旋转增加的角度越大,看起来就转得越快。

四、实现原理解析

1. 控件属性控制

JMobile Studio中的每个控件都有很多属性可以通过脚本读写,比如位置属性x和y、大小属性w和h、旋转属性rot等等。我们这个demo用的就是rot属性,它的值是一个角度数值,单位是度。

2. 定时器驱动动画

动画的本质就是每隔一小段时间改变一下控件的属性,人眼看起来就像是在动。setInterval就是干这个的,它可以按照设定的时间间隔周期性地执行某个函数。我们把修改控件属性的逻辑放在这个函数里,就实现了连续的动画效果。

3. 变量控制状态

通过speed和direction这两个全局变量,我们可以在运行时动态改变动画的状态。按钮点击事件只需要修改变量的值,不需要去操作定时器本身,逻辑非常清晰。

五、扩展玩法

1. 启停控制

再加一个开始/停止按钮,用一个布尔变量控制定时器的执行。在rotation函数开头判断一下这个变量,如果是停止状态就直接return,不执行旋转逻辑。

2. 渐变加速/减速

不要让速度一下子跳变,而是每次按钮点击时speed逐步增加或减少,做一个缓动效果,看起来更自然。

3. 组合动画

除了旋转,还可以同时修改其他属性,比如风车一边旋转一边上下浮动,或者根据转速改变透明度,实现更丰富的视觉效果。

4. 数据联动

把旋转速度和某个实际的设备变量关联起来,比如电机转速越快,风车转得也越快,做成一个可视化的转速指示器。

为了方便大家更好的上手,我把demo链接也附上,大家可以下载进行测试。
链接: https://pan.baidu.com/s/1u77KxJ-ONsl-3gq3fq0CVA?pwd=p7ii 提取码: p7ii

相关新闻

  • 半夜两点告警群炸了,BE节点CPU爆了,我是怎么5分钟把Doris救回来的?
  • WordPress主题漏洞防御实战:从供应链攻击到立体化安全体系
  • Dify平台智能体开发实战:从架构到部署

最新新闻

  • STM32与Si4731打造低成本可编程收音机系统
  • STM32F765ZI与BMI270的6DoF IMU开发指南
  • ICM-42605与PIC18LF4515实现运动追踪系统设计
  • 2026海南省黄金回收白银回收铂金回收旧料回收怎么选?五家高实价铂金白银线下门店测评清单 + 联系方式
  • PIC18F86J16实现DC-DC降压电源设计与优化
  • 5分钟掌握B站视频转换技巧:m4s-converter完全指南

日新闻

  • Python Playwright录制功能:从零到一构建自动化测试脚本
  • 如何用开源工具永久保存你心爱的小说:novel-downloader全攻略
  • In-Context Learning不是教知识,而是模式对齐:从5个示例到100个工业级样本的真相

周新闻

  • Windows字体自定义终极方案:No!! MeiryoUI完全指南
  • Deepin Boot Maker:告别命令行,3分钟制作Linux启动盘的智能解决方案
  • Plain Craft Launcher 2:重新定义你的Minecraft游戏体验

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号