html5做一个展示页面,基于HTML5的WebGL实现json和echarts图表展现在同一个界面

突然有个想法,如果能把一些用到不同的知识点放到同一个界面上,并且放到一个盒子里,这样我如果要看什么东西就可以很直接显示出来,而且这个盒子一定要能打开。我用HT实现了我的想法,代码一百多行,这么少的代码能实现这种效果我觉得还是牛的。

先来看看效果图:

0a55fd11adbf4e1b9543fbab56dc2e46.gif

这个例子最基础的就是最外层的盒子了,所以我们先来看看如何实现它:

var box = new ht.CSGBox();

dataModel.add(box);

用HT可以很轻易地实现这个盒子,在HT中封装了很多基础图元类型,我们经常用到的ht.Node也是其中一个,这样我们可以不用反复地写相同的代码来完成基础的实现。

这个例子中用的封装好的基础图元是ht.CSGBox,一个盒子模型,可以参考HT for Web 建模手册,我们在手册中可以看到,在CSGBox中我们只能操作这个盒子的各个面,如果你想要自己设置一些特殊的功能,只需要操作ht.Style(HT for Web 风格手册)即可。

要想实现在盒子上的一个面上添加贴图,我能想到的只有HT封装的ht.Default.setImage函数了。

这边我实现的方法是参考HT的editor来运作的,重新声明一个graphview组件和一个datamodel数据模型,然后通过ht.Default.xhrLoad方法调用json,在方法中用ht.Default.parse将text转成json格式,然后反序列化将json里面的内容展现成可视化的界面,再设置动画,再立即刷新用到这个json的界面,否则就算设置了动画,画面也不会改变。

ht.Default.xhrLoad('displays/demo/pump.json', function(text){

const json = ht.Default.parse(text);

pumpDM.deserialize(json);

var currentRotation = 0;

var lastTime = new Date().getTime();

setInterval(function(){

var time = new Date().getTime();

var deltaTime = time - lastTime;

currentRotation += deltaTime * Math.PI / 180 * 0.3;

lastTime = time;

pumpDM.getDataByTag('fan1').setRotation(currentRotation);

pumpDM.getDataByTag('fan2').setRotation(currentRotation);

box.iv();

// g3d.iv();这边也可以刷新g3d,但是局部刷新更省

pumpGV.validateImpl();

}, 10);

}, 10);

这个时候我不能把pumpGV和g3d都加到底层div上,并且我的意图是把pumpGV加到g3d中的CSGBox中的一面上,所以为了让pumpGV显示出来 必须设置pumpGV的宽高,而这个宽高必须比我json画出来的图占的面积要大,不然显示不完整。如果想看这个宽高对显示的影响,可以自己改改看来玩玩。

pumpGV.getWidth = function() { return 600;}

pumpGV.getHeight = function(){ return 600;}

pumpGV.getCanvas().dynamic = true;//设置这个是为了让canvas能动态显示

echarts图表的显示也是很基础的,只要再加上 canvas.dynamic = true,并且实时刷新gv即可。

最后,只需要将这两个回传的canvas传入ht.Default.setImage中即可:

ht.Default.setImage('echart', charts(option));

ht.Default.setImage('pump', pumpGV.getCanvas());

ht.Default.drawImage函数生成新的图实际上就是在canvas上画图,所以我们只要把我们已经画好的canvas传到ht.Default.setImage就可以生成图片了。

有一点需要改进的,我们可以看到盒子上的线段,图形,文字周边都有一圈的锯齿,因为我们在设置字体时,同时设置了半透明,在处于半透明的情况下“blend”样式会被关闭,这个时候我们就没法控制样式了,一般有透明度的时候需要将“all.transparent”设置为true,

我们可以设置需要显示的面的transparent: true即可。看下完成后的效果图:

455452694f5685081b30d06ede989bb4.png

总结

以上所述是小编给大家介绍的基于HTML5的WebGL实现json和echarts图表展现在同一个界面,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/531574.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Netbeans 中创建数据连接池和数据源步骤(及解决无法ping通问题)

1.启动glassfish服务器, 在浏览器的地址栏中输入 http://localhost:4848 2.首先建立JDBC Connection Pools; 3.new 一个Connectio Pools 4.对General Settings属性填写; 5.填写Datasource Classname:com.mysql.jdbc.jdbc2.optiona…

Netbeans不能正常启动glassfish或者部署失败不能运行的问题

错误信息:D:\临时文件\netbeans\WebTest\build\web中部署GlassFish Server 4, deploy, Connection refused: connect, falseD:\临时文件\netbeans\WebTest\nbproject\build-impl.xml:1048: 尚未部署该模块。有关详细信息, 请查看服务器日志。构建失败 (总时间: 7 秒…

计算机的好处英语,电脑的好处英语演讲稿

电脑的好处英语演讲稿The computer plays the vital role in ours life, the computer may help us to handle very many matters: The data computation, the study entertainment, the office automation, the control production, draws money automatically, long-distance…

计算机重应用,装了一大堆应用,iPhone6会变重吗?

你有没有想过,iPhone买来以后装入数十甚至上百个应用,手机是否在重量上发生了变化。广泛接受马克思主义教育的人类表示:别闹了,数据和信息属于意识,怎么能有重量(或者应该叫质量)。更何况这个所谓的“信息爆炸”时代每…

电子商务专业需要考计算机证吗,电子商务必考的证有哪些

2020-03-14 16:31:11文/钟诗贺电子商务是当今非常热门的学科,必考的专业证书主要有电子商务员、电子商务师等等。电子商务专业介绍电子商务专业是融计算机科学、市场营销学、管理学、经济学、法学和现代物流于一体的新型交叉学科。该专业培养掌握计算机信息技术、市…

陷阱计算机音乐谱大全,陷阱 原版C调-王北车-和弦谱-《弹吧》官网tan8.com-和弦谱大全,学吉他,秀吉他...

E此浏览器不支持画布前奏扫弦 C Fm C Fm C Am F G7主C Em一封信两年都没动笔C Am三个字过了几个四季F G你是有多想逃避Em Am来不及问问你Dm G我已经错过相爱的日期C Em那天你消失在人海里C Am你的背影沉默得让人恐惧F G Em Am你说的那些问题 我回答得很坚定Dm G偏偏那个时候我最…

江苏省公务员计算机类130分,130分,在江苏省考中是什么水平?

原标题:130分,在江苏省考中是什么水平?关键词回复获取更多详情更多公考常识,后台回复【常识】更多公考素材,后台回复【素材】【130】在江苏算是公考进面的一道普遍门槛。对于2020江苏省考的考生,130分应定为…

软件测试项目时间一般多少钱,项目的时间进度该如何估算?

后来,开发一周左右,发现原来使用的模块,要用新的接口A,但是接口A还不能满足我现有的需求,必须需要程序员A重新包装给我,这样再等了一下午,第二天,问题不断,不停的跟程序员…

计算机寄存器端口,CPU和外设之间的数据传送方式有哪几种

数据传输(data transmission),指的是依照适当的规程,经过一条或多条链路,在数据源和数据宿之间传送数据的过程。也表示借助信道上的信号将数据从一处送往另一处的操作。CPU与外设之间的数据传输有以下三种方式:程序方式、中断方式…

茌平计算机中考成绩查询,中考成绩查询系统入口2021

湘潭市的中考成绩查询,需要在通道开通之后进行,那么查询通道在哪里呢?想必大家都很想知道。下面出国留学网小编为大家带来湘潭中考成绩查询系统入口2021,仅供参考,欢迎阅读。拓展阅读:中考后有哪些选择出路…

win10证书服务器不可用,win10系统提示“安全证书的吊销信息不可用”的修复方法...

在windows10系统下一位用户遇到了奇怪的问题,该用户表示浏览网页的时候经常会弹出安全警报:该镇点安全证书的吊销信息不可用。是否继续? 的报错弹窗,这是怎么回事呢?其实,该问题是由于ie浏览器中的设置出现…

暴走大侠显示进入服务器失败,暴走大侠:常见问题详解,再遇见这样的问题也不再迷糊...

相信玩了这么久的英雄好汉们,对这个游戏的理解已经有了一定的了解。同时也应该有很多疑问,几天就给大家详细的讲解下最近几天大家关心最多的问题。关于门派选择问题,主动技能怎学?答:门派问题的话,这个最好…

mysql数据库移植

在mysql数据库移植的时候,把自己电脑上mysql中data目录的一些重要文件复制到其他电脑上,先备份一下其他电脑上的mysql的data目录,然后替换! 例如我的mysql默认的数据库文件位置: C:\ProgramData\MySQL\MySQL Server 5.…

蓝桥杯 历届试题 九宫重排

问题描述如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着。与空格子相邻的格子中的卡片可以移动到空格中。经过若干次移动,可以形成第二个图所示的局面。我们把第一个图的局面记为:12345678.把第二个图的局面记为…

java坦克大战源码下载

HJZGG: https://github.com/hjzgg/hjzgg_tank_java 解压之后运行可执行jar包即可!效果图如下: v 1.游戏开始v 2.选择地图v 3.开始游戏v 4.游戏自定义转载于:https://www.cnblogs.com/hujunzheng/p/4348415.html

虚拟化服务器的管理与维,服务器虚拟化管理

服务器虚拟化管理 内容精选换一换为了解决Windows系统的源端服务器与目的端弹性云服务器的兼容性问题,您需要手动给目的端服务器安装相关驱动进行优化。登录管理控制台。选择“计算 > 弹性云服务器”。在弹性云服务器列表中,查看目的端服务器的规格。…

Myeclipse 操作数据库

步骤1:通过MyEclipse中的window-》show View-》other 调出。DB浏览器,和 SQL Results 步骤2. 可以右键单击空白处,选择new,创建一个新的DB connection, 或者edit已经存在的DB connection 步骤3:数据库信息填…

媒体服务器协议,媒体服务器介绍(mediactrl架构)

5.1.1MediaCtrl媒体控制草案MediaCtrl是IETF下专门研究和制定媒体服务器控制标准的小组,以SIP和XML为所制定标准的基础。这个工作组的工作包括:定义媒体服务器控制的技术需求说明、框架、控制协议簇和定位/连接协议。5.1.1.1技术需求描述这个技术需求描述…

android target unknown and state offline解决办法

没有错,将adb的版本升级一下就好了! 下载地址为:http://files.cnblogs.com/files/hujunzheng/adb1.0.32.zip 转载于:https://www.cnblogs.com/hujunzheng/p/4360436.html

s2sh框架搭建(辅助工具:MyEclipse)及解决一些遇到的问题

1.新建一个web project 2.首先生成Hibernate Facet 3.Hibernate Facet 安装步骤 4.然后是spring facet安装步骤 5.最后是struts facet 的配置 6.最后的整体布局如下所示 7.在服务器上运行,发现如下错误: 严重: Exception sending context initialized ev…