大家好我是宏集科技鲁工给大家分享不一样的工业物联网信息最近做了一个风车旋转的小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?pwdp7ii 提取码: p7ii
EXOR HMI控件动画开发实战:从零实现一个旋转加载动画
大家好我是宏集科技鲁工给大家分享不一样的工业物联网信息最近做了一个风车旋转的小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?pwdp7ii 提取码: p7ii