TWaver动画之雷达扫描效果

UI和功能是好的产品的两个重要因素,很多产品往往只注重功能上的设计,而忽略了UI。在这个“看脸”的时代,就算产品的功能很强大,如果UI跟不上步伐,你的产品都会在客户心中大打折扣。
CustomScreenRecord5
做安全和监控的项目中经常会进行扫描,一般会用一个gif图片来表示软件正在进行扫描,但是如果想更换这个图标的样式,就需要美工重新做图。TWaver提供了动画效果,如果对图标的动画样式不满意,可以通过简单的更改程序来实现,避免了美工的二次返工,提高了效率。切入正题,看我们怎么实现一个动画的雷达扫描图,首先注册一个图片,用HTML5的canvas画了一个静态的雷达图,如果你熟悉TWaver的话,下边这段代码应该不难。如果不熟悉的话,可以参考产品文档自定义绘制(draw)这一节的内容。

twaver.Util.registerImage('radar', {
      v: [
        {
          shape: 'draw',
          draw: function (ctx, data, view) {
            var canvas = this.canvas,
              g = this.g,
              gradient = this.gradient,
              diameter = Math.floor(data.getWidth() * view.getZoom()),
              radius = diameter / 2,
              hueStart = 120,
              hueEnd = 170,
              hueDiff = Math.abs(hueEnd - hueStart),
              width = diameter,
              height = diameter;
            if (!canvas) {
              this.canvas = canvas = document.createElement('canvas');
            }
 
            if (width !== canvas.width || height !== canvas.height) {
              canvas.width = diameter;
              canvas.height = diameter;
              this.g = g = canvas.getContext('2d');
              this.gradient = gradient = g.createLinearGradient(radius, 0, 0, 0);
              gradient.addColorStop(0, 'hsla(' + hueStart + ', ' + 50 + '%, ' + 40 + '%, 1)');
              gradient.addColorStop(1, 'hsla(' + hueEnd + ', ' + 50 + '%, ' + 40 + '%, 0.1)');
            }
 
            g.globalCompositeOperation = 'destination-out';
            g.fillStyle = 'hsla(0, 0%, 0%, 0.1)';
            g.fillRect(0, 0, width, height);
             
            g.globalCompositeOperation = 'lighter';
            var i;
            for (i = 0; i < 4; i++) {
              g.beginPath();
              g.arc(radius, radius, ((radius - 1) / 4) * (i + 1), 0, Math.PI * 2, false);
              g.strokeStyle = 'hsla(' + (hueEnd - (i * (hueDiff / 4))) + ', ' + 50 + '%, ' + 40 + '%, 0.1)';
              g.lineWidth = 3;
              g.stroke();
            };
 
            g.beginPath();
            g.moveTo(radius - 1, 2);
            g.lineTo(radius - 1, height - 2);
            g.moveTo(2, radius - 1);
            g.lineTo(width - 2, radius - 1);
            g.strokeStyle = 'hsla(' + ((hueStart + hueEnd) / 2) + ', ' + 50 + '%, ' + 40 + '%, .03)';
            g.stroke();
             
            g.save();
            g.translate(radius, radius);
            g.rotate(data.getClient('angle'));  
            g.beginPath();
            g.moveTo(0, 0);
            g.arc(0, 0, radius, -0.0349, 0.0349, false);
            g.closePath();
            g.fillStyle = gradient;
            g.fill();  
            g.restore();
 
            ctx.scale(1 / view.getZoom(), 1 / view.getZoom());
            ctx.drawImage(canvas, -width / 2, -height / 2);
          }
        }
      ]
    });

 接下来给这个雷达图设置一个动态的效果,让雷达图不断的扫描。下边的这段代码设置了雷达指针的扫描角度,持续时间:

 new twaver.Animate({
    source: node,
    attr: 'C@angle',
    from: 0,
    to: Math.PI * 2,
    dur: 4000,
    repeat: Number.POSITIVE_INFINITY,
    reverse: false
  }).play();
}

 这样一个简单的雷达动画效果就出来了,是不是很简答,如果对这个效果用兴趣的,可以发邮件索取源代码,附上邮箱:jack.shangguan@servasoft.com

【Axure教程】雷达扫描动态效果(航空信息可视化案例) 今天教大家在Axure里制作雷达扫描的动态效果,我们会以航空信息可视化分析的案例来展开 阅读详情

相关推荐

前端js+canvas实现雷达扫描效果

//页面容器 <div class="canvas_loop" v-show="isCanvas"> <canvas id="can" width="490" height="490" style=" margin:0 auto;"></canvas> </div> //调用 Rds.init() //雷达主体 //////////////////////////////////////////////// .

qq_873366938的博客 3097

canvas 绘制动态雷达图

canvas 动态雷达

weixin_43929450的博客 1725

CSS3如何实现雷达扫描图(动态样式)

3.然后定义了.radar:after伪元素,设置了内容为空格、显示方式为块级元素、背景图片为线性渐变、宽度、高度、绝对定位、顶部、左侧对齐、动画属性。动画名称为radar-beam,持续时间为5秒,循环次数为无限次,动画速度函数为线性,变换原点为右下角,边框圆角为100% 0 0 0,动画播放状态由变量–state控制。2.接下来定义了.radar:before伪元素,设置了内容为空格、显示方式为块级元素、绝对定位、宽度、高度、边框圆角和动画属性。

qq_44971069的博客 1137

自定义雷达扫描的实现

最近项目上不忙了,马上也就国庆了,终于有那么一点点的时候可以放松了。 在gtihub上浏览的时候发现了一个雷达扫描的效果,然后自己学习了下原理,自己动手实践了下。 首先实现原理: (1)基于Matrix 矩阵来实现雷达扫描旋转的问题 (2)基于Android里边渐变的效果来实现扫描的使用不同阶段的...

weixin_34318956的博客 466

Canvas雷达显示图,动态扫描

做卫星项目的时候,会涉及到雷达图,用于扫描卫星,给人形象化的感觉。以下代码为canvas实现的demo,请运行查看.

大剑师兰特的GIS世界 1181

CSS3雷达扫描动态图.zip

CSS3雷达扫描动态图,纯CSS3代码,雷达扫描动画,模拟雷达扫描动画效果。

html5 canvas实现雷达扫描动画特效(1)

整理面试题,不是让大家去只刷面试题,而是熟悉目前实际面试中常见的考察方式和知识点,做到心中有数,也可以用来自查及完善知识体系。《前端基础面试题》,《前端校招面试题精编解析大全》,《前端面试题宝典》,《前端面试题:常用算法》PDF完整版点击这里领取义、实战项目、讲解视频,并且会持续更新!**如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)整理面试题,不是让大家去只刷面试题,而是熟悉目前实际面试中常见的考察方式和知识点,做到心中有数,也可以用来自查及完善知识体系。

2401_84091110的博客 1300

HTML5 Canvas实现雷达扫描动画特效

这是一款基于HTML5 Canvas实现的雷达扫描动画特效源码,canvas是HTML5特有的画布工具,我们可以在canvas上绘制任意元素,包括3D元素。这款雷达扫描动画就是利用了canvas的灵活特性,利用js在canvas上绘制这些美丽的扫描线条。此外这款源码还提供了点击绘制的功能,用户可以根据自己的喜好绘制出新的类似雷达扫描特效的图形。

Canvas编程练习:20几行js代码实现雷达扫描动画效果

灵感源于一不小心挖了一个陈年老贴etherdream发的《【分享】魔兽技能冷却效果(希望能有更好的思路)》的坟,看他的代码太长(约200行),于是自己动手写了一个,也就20多行代码,效果也还不错,点这里看DEMO(1)。 etherdream的原理是使用borderWidth的动态改变,可兼容非HTML5浏览器,缺点是代码较多,需要新增DOM节点,而且只能用纯色遮罩,不能实现用图片做遮罩。

无心的专栏 6405

风二西CTF流量题大集合-刷题笔记|基础题(1)

部分题目已包含脚本和解题视频,但更建议自行分析和手搓脚本。

zerorzeror的博客 2764

RaiDrive+AList保姆级教程:5分钟搞定OneDrive/百度网盘挂载到本地(附WebDAV配置)

本文提供RaiDrive+AList的保姆级教程,5分钟内实现将OneDrive/百度网盘挂载到本地的详细步骤,包括WebDAV配置。通过AList统一转换云存储协议,RaiDrive虚拟磁盘挂载,显著提升多网盘管理效率,适合需要跨平台操作文件的用户。

weixin_28331555的博客 455

html5 canvas实现雷达扫描动画特效

先看一下最终效果 实现思路 绘制4个圆 绘制一个十字线 绘制一个扫描的指针 让指针转起来 雷达构造函数 function Radar(){ this.renderArr=[];//待渲染对象存储数组 this.rotateAngle=0;//绘制的指针开始角度 this.speed=0.01* Math.PI;//绘制的指针偏移速度 this.point=null;//存储指针对象 } Radar.prototype.init=function(el

编程界明世隐的博客 3975

【5G】5G 核心网(5GC)基本架构

本文旨在科普5G核心网相关知识...

Learning makes me happy (0^◇^0) 4万+

Silverlight二维旋转+平面渐变+动画,模拟雷达扫描

Silverlight模拟雷达扫描,带声音和滚动文字提示!

LisenYang的专栏 3638

Shopee动态参数x-sap-Ri与x-sap-Sec逆向解析实战

现代电商前端反爬普遍采用动态参数校验机制,其核心是将设备指纹、DOM状态与时间上下文耦合生成不可复用的请求凭证。x-sap-Ri本质是渲染上下文唯一标识,依赖真实浏览器环境中的DOM树结构、Canvas像素指纹及毫秒级时间扰动;x-sap-Sec则是基于该标识与服务端同步密钥生成的HMAC-SHA256签名,具备强时效性与密钥轮换特性。这类机制显著提升了自动化采集门槛,广泛应用于Shopee商品详情页等高价值数据接口。本文聚焦于从Chrome DevTools调试出发,系统还原参数生成逻辑,覆盖DOM一致性

weixin_30603633的博客 893

Onnxruntime之YOLOP部署过程记录

魔改YoloP部署过程记录

如果想成为中心,那么就到中心去吧。 1924

TWaver网元动态转动效果

最近有客户提了一个网元动态旋转的需求,用TWaver实现起来还是很方便的,效果如下图所示: 主要实现功能: 1:网元动态旋转 2:网元选中效果,被选中网元快速转到最前端后停止旋转,取消选中自动重启旋转 3:根据鼠标位置自动调整旋转方向 4:可以在程序中修改fw/bw/fh/bh调整图片显示效果。 代码如下所示: &lt;?xml version="1.0" enc...

web开发自学 243

Dify 系列教程 | 第 6 篇:工作流入门 -- 用可视化方式编排 AI 逻辑

Dify 工作流是一个基于有向无环图(DAG)的可视化 AI 逻辑编排系统。你可以把多个处理步骤(节点)用连线串联起来,数据从起点流向终点,每经过一个节点就被处理一次。用一个类比来理解:如果单次 Prompt 调用是"一道菜",那工作流就是"一道完整的生产线" – 原材料(输入)进入流水线,经过清洗(预处理)、切配(数据转换)、烹饪(AI 推理)、装盘(格式化输出)等工序,最终产出成品。创建一个工作流类型的应用(或高级聊天类型),就会进入工作流编辑器。编辑器基于ReactFlow构建(

weixin_43674738的博客 118

实用CSS3模拟实现一个雷达扫描动画特效

【代码】实用CSS3模拟实现一个雷达扫描动画特效。

qq_43787947的博客 1517

如何完全卸载axure软件以及解决安装axure后打不开的问题【2023年】

如何完全卸载axure软件以及解决安装axure后打不开的问题【2023年】

念兮为美 5138

STM32串口控制LED灯的亮灭

STM32中的串口控制LED灯的亮灭,分为两种方式,一种是直接发送数字0和1来控制灯的亮灭,另一种是通过发送字符串来控制。 我所使用的开发板主控芯片是STM32F401RET6,主频84MHz, 首先要进行串口的初始化: /* 函数功能:串口的初始化 函数名:Usart_Init 返回值:无 参数:u32 brr 备注: USART1_TXD->PA9 USART1_RXD->PA10 */ void Usart_Init(u32 brr) { float div; u16 div

博客 2万+

实用CSS3模拟实现一个雷达探测扫描动画特效

之前好长时间住在唐家岭,从路口往上地走的时候,总能看见一个一个的雷达,好壮观,今天用CSS3实现一个雷达探测扫描的效果。

xingyu_qie的专栏 5077

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Python利用matplotlib制作雷达扫描显示仪(之后可结合串口和超声波传感器使用,亦可以做为仪表盘使用)

Python利用matplotlib制作雷达扫描显示仪(之后可结合串口和超声波传感器使用,亦可以做为仪表盘使用)。内有制作雷达扫描GIF图的源代码包含。

SmartGridequation的博客 2153

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【Android】实现雷达扫描效果

1. 效果图展示及效果剖析 1.1 效果图 1.2 效果剖析 根据上图效果,我大致将该效果分为三层(背景层/扫描层/动态点层), 其中背景 层我们可以通过代码绘制/引入图片实现,扫描层、动态点层 需要美切除对应图片后绘入。 2. 实现步骤 2.1 绘制背景效果 实现方法1: 1).利用Canvas.drawCircle方法绘制圆环,层层叠加,实现背景

Crazy_zihao的博客 1万+
上一篇: 基于APE物理引擎的管线容积率计算方法
下一篇: TWaver3D特效系列之环境映射
subnetwork
博客等级 码龄17年 17粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值