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

先来看看效果图:

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

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即可。看下完成后的效果图:

总结

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

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

  1. 一个html5页面,html5做一个黑板报页面

    html5做一个黑板报页面 我们结合移动设备(手机和平板电脑)的特性,介绍HTML5中新增的语义化标签元素,以及在移动Web浏览器下Web页面布局的知识及例子. 在HTML5标准添加的新元素中,用于常 ...

  2. html网页设计板报,html5做一个黑板报页面

    html5做一个黑板报页面 我们结合移动设备(手机和平板电脑)的特性,介绍HTML5中新增的语义化标签元素,以及在移动Web浏览器下Web页面布局的知识及例子. 在HTML5标准添加的新元素中,用于常 ...

  3. 用html5做一个简单的作品,html5 canvas 简单画板实现代码

    canvas简单画板 canvas简单画板 提示:您可以先修改部分代码再运行

  4. 做一个展示型企业网站要多少钱

    做一个展示型企业网站要多少钱?很多客户有这样的疑问, 首先,网站功能不同价格肯定也不同,复杂的价格自然很高,简单的自然就低. 现在的市场价格,个人外包的收费,普通网站建设一般5k起,响应式就要8k.然 ...

  5. 用html5做一个介绍自己家乡的页面_厚溥资讯 | HTML5的小知识点小集合(上)

    1.Doctype作用?标准模式与兼容模式各有什么区别? (1)声明位于位于HTML文档中的第一行,处于标签之前.告知浏览器的解析器用什么文档标准解析这个文档.DOCTYPE不存在或格式不正确会导致文 ...

  6. php做一个网页的源代码,用HTML5做一个个人网站此文仅展示个人主页界面。内附源代码下载地址...

    下载说明: 1.再好的作品都不如将来要做的作品.在每一次的设计当中都能有所收获,才是设计师在web开发中最得益的. 2.本站所有作品均是杨青个人设计.如果发现模板有错,请尽情谅解. 3.如果遇到什么问 ...

  7. 用html5做一个介绍自己家乡的页面_(近万字)一篇文章带你了解HTML5和CSS3开发基础与应用-适合前端面试必备...

    作者 | Jeskson来源 | 达达前端小酒馆 HTML5和CSS3开发基础与应用,详细说明HTML5的新特性和新增加元素,CSS3的新特性,新增加的选择器,新的布局,盒子模型,文本,边框,渐变,变 ...

  8. 用html5做一个介绍自己家乡的页面_【基础教程全】Html5视频教程

    HTML5是构建Web内容的一种语言描述方式.HTML5是互联网的下一代标准,是构建以及呈现互联网内容的一种语言方式.被认为是互联网的核心技术之一.HTML产生于1990年,1997年HTML4成为互 ...

  9. html5做一个相册_HTML5最新版本介绍

    HTML5是HTML4.01和XHTML1.0之后超文本标记语言的最新版本,由一群自由思想者设计,最终实现了多媒体支持.交互性.更智能的表单和更好的语义标注. HTML 5不只是 HTML规范的最新版 ...

最新文章

  1. 计算机应用基础2010一级,2010年一级结构基础辅导:(计算机应用基础)备考讲义(10)...
  2. 最大似然估计和最大后验概率
  3. java 泛型 extends 多个
  4. Mysql插入很慢,找到了稍微快点的方法
  5. mysql优化varchar索引_MySQL优化--概述以及索引优化分析
  6. 软件测试的基础知识(二)
  7. 集合交集,并集,差集运算
  8. 微信或手机浏览器在线显示office文件(已測试ios、android)
  9. HttpModule HttpHandler(转)
  10. Oracle之rollUp函数
  11. ps自动,批处理,替换原文件夹图片
  12. 第三方支付相关知识结构
  13. 在线学习PS设计精讲精练记录(5)
  14. 微信小游戏世界排行榜的绘制
  15. iTween那些事儿(二)
  16. python bp神经网络 异或_两层神经网络输出异或
  17. python抓取股市实时交易数据_python实时读取股票大单交易数据
  18. Java 图像处理教程(人脸检测,添加水印,图像颜色转换)
  19. 八年级计算机教案word,八年级信息技术WORD2003教案.doc
  20. 一个便捷的免费图像标注工具AutoSeg

热门文章

  1. android requestpermissions参数,Android M Permissions:onRequestPermissionsResult()未被调用
  2. SpringBoot2 整合 XFIRE 服务端和客户端
  3. Centos7.x 在线安装Docker和离线安装 Docker
  4. ajax前台传json到后台解析的方法以及注意事项
  5. 实战03_SSM整合ActiveMQ支持多种类型消息
  6. ESLint is disabled since its execution has not been approved or denied yet
  7. 从数组随机抽取5个不重复_Power Query 如何保证随机抽取元素不重复
  8. python获取shell输出及返回码_如何执行shell命令获取Python中命令后的输出和pwd
  9. 删除一个无头单链表的非尾节点(C语言)
  10. 幻兽天下修复版java_宠物天下四-幻兽天下