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.pswp.cn/news/531574.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/531574.shtml
英文地址,請注明出處:http://en.pswp.cn/news/531574.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

android 空白占位符,android textview空格占位符以及一些其他占位符匯總

普通的英文半角空格 no-break space (普通的英文半角空格但不換行) 中文全角空格 (一個中文寬度) ? en空格 (半個中文寬度) ? em空格 (一個中文寬度) 四分之一em空格 (四分之一中文寬度)相比平時的空格( ),nbsp擁有不間斷(non-breaking)特性。即連續的nbs…

html圖片平移,CSS3 按鈕懸停時背景圖片平移入場

JavaScript語言:JaveScriptBabelCoffeeScript確定$(".thumb-next").on(mouseleave, function() {$(".layout-p").text("Hover above, please.");});$(".thumb-next").on(mouseenter, function() {$(".layout-p")…

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…

商品詳情頁html,天天生鮮商品詳情頁HTML+css

body{font-family: Microsoft YaHei;color:#666;font-size:12px;}/*頂部條狀態*/.header_con{height:29px;background-color: #f7f7f7;border-bottom:1px solid #ddd;}.header{width:1200px;height:29px;margin:0 auto;1}.welcome{font:12px/29px Microsoft YaHei UI;float: le…

Netbeans不能正常啟動glassfish或者部署失敗不能運行的問題

錯誤信息:D:\臨時文件\netbeans\WebTest\build\web中部署GlassFish Server 4, deploy, Connection refused: connect, falseD:\臨時文件\netbeans\WebTest\nbproject\build-impl.xml:1048: 尚未部署該模塊。有關詳細信息, 請查看服務器日志。構建失敗 (總時間: 7 秒…

js實現圖片加載特效(從左到右,百葉窗,從中間到兩邊)

/*  網上百度的&#xff0c;感覺”從中間到兩邊“的效果寫的不是很好&#xff0c;改了一下&#xff0c;感覺可以了&#xff01;*/<html><head><title></title><meta http-equiv"Content-Type" content"text/html; charsetUTF-8&qu…

給html動態添加css樣式,JavaScript動態添加css樣式和script標簽

[動態添加css樣式]window.οnlοadfunction(){var headdocument.getElementsByTagName(head)[0];     //獲取到head元素var linkdocument.createElement(link);             //創建link元素節點&#xff0c;也就是link標簽link.rel"stylesheet";  …

java中Cookie中文字符亂碼問題

如果Cookie中的Value 中有中文字符出現&#xff0c;在加入Cookie的時候&#xff0c;會出現下面的錯誤&#xff1a;  java.lang.IllegalArgumentException: Control character in cookie value or attribute.當我們設定Cookie的Value的值得時候&#xff1a;  cookie.setValue…

湖北省仙桃市2021年高考成績查詢,2021年4月湖北仙桃市自考成績查詢時間和有效期是多久?...

2021年4月湖北仙桃市自考成績查詢時間和有效期是多久?根據《2021年4月湖北自考成績公布及復查事項通知》知悉&#xff0c;2021年4月湖北仙桃市自考成績查詢時間為5月12日起&#xff0c;官方成績查詢入口已開通。一、2021年4月湖北仙桃市自考成績查詢入口及流程2021年4月湖北仙…

html5 手機拍視頻濾鏡,用canvas實現圖片濾鏡效果附演示_html5教程技巧

這是一個很有意思的特效&#xff0c;模擬攝像機拍攝電視屏幕畫面時出現點狀顆粒的效果。顆粒的大小通過變換矩陣實現&#xff0c;可以任意調節&#xff0c;有興趣研究的朋友可以嘗試更多的效果&#xff0c;代碼沒有經過優化&#xff0c;只是一個粗糙的Demo&#xff0c;大家可以…

java中得到classpath和當前類的絕對路徑的一些方法(路徑中的%20進行替換空格)...

原網址&#xff1a;http://blog.csdn.net/shendl/article/details/1427475&#xff08;注意&#xff1a;利用下面方式得到路徑&#xff0c;如果路徑中有空格字符&#xff0c; 那么會有"%20"進行替換&#xff0c; 所以得到之后再將"%20"替換成空格&#xff…

計算機的好處英語,電腦的好處英語演講稿

電腦的好處英語演講稿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…

jsp實現簡單的分頁

效果如下&#xff1a;<%-- Document : pageCreated on : 2014-11-18, 8:55:02Author : HJZ --%><%page contentType"text/html" pageEncoding"UTF-8"%> <!DOCTYPE html> <html><head><script language "javas…

臺式計算機有什么配置,目前臺式電腦的主流配置有哪些?

主流配置的話&#xff0c;目前CPU基本都上八代8100/8400/8700主板b360m板子比較火&#xff0c;不超頻很合適內存條的話360只支持2666所以一般都是上8g2400的條子硬盤的話現在固態降價了&#xff0c;且主板支持nvme 256g性價比不錯 看需求&#xff0b;機械顯卡的話1060系列甜品級…

javaBean和jsp應用

原網頁&#xff1a;http://www.douban.com/note/102320977/ JavaBean是一種可復用&#xff0c;跨平臺的組件。共有兩種JavaBean&#xff1a;一種無用戶界面&#xff0c;這種一般用于處理數據運算&#xff0c;操作數據庫等。另一種是有用戶界面(User Interface)的JavaBean. 在Js…

計算機重應用,裝了一大堆應用,iPhone6會變重嗎?

你有沒有想過&#xff0c;iPhone買來以后裝入數十甚至上百個應用&#xff0c;手機是否在重量上發生了變化。廣泛接受馬克思主義教育的人類表示&#xff1a;別鬧了&#xff0c;數據和信息屬于意識&#xff0c;怎么能有重量(或者應該叫質量)。更何況這個所謂的“信息爆炸”時代每…

SQLExecption:Operation not allowed after ResultSet closed解決辦法

原網址&#xff1a;http://blog.csdn.net/sku0923/article/details/1722370 一個stmt多個rs進行操作引起的ResultSet已經關閉錯誤 一個stmt多個rs進行操作. 那么從stmt得到的rs1,必須馬上操作此rs1后,才能去得到另外的rs2,再對rs2操作. 不能互相交替使用,會引起rs已經關閉錯誤.…

2003正在鎖定計算機,WIN2003 自動鎖定怎么解決?

那么網速慢的作祟者是什么呢&#xff1f;依筆者推斷原因主要有二。■網絡協議配置問題&#xff0c;■WinXP計劃任務的問題。但如果其它Windows電腦在網上鄰居中根本看不到WinXP那臺電腦&#xff0c;便可能是用戶鎖定和安全策略沒有設置好。這時就需要從以下幾個方面入手&#x…

Ajax在IE瀏覽器會出現中文亂碼解決辦法

在AJAX瀏覽器來進行發送數據時&#xff0c;一般它所默認的都是UTF-8的編碼. Ajax在IE瀏覽器會出現中文亂碼的情況&#xff01;解決辦法如下<script type"text/javascript"> function showDiv(str){ document.getElementById("picDiv").style.displ…

用計算機彈正義之道,正義之道

“正道的光&#xff0c;照在了大地上&#xff0c;把每個黑暗的地方全部照亮&#xff0c;坦蕩是光&#xff0c;像男兒的胸膛&#xff0c;有無窮的力量如此堅強……”黃渤的歌曲《正義之道》抖音上太火了&#xff0c;聽著聽著聽著不由想起今天發生在我們班里的一件事。“老師小某…