久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

基于HTML5 Canvas的3D動(dòng)態(tài)Chart圖表的示例

這篇文章主要介紹了基于HTML5 Canvas的3D動(dòng)態(tài)Chart圖表的示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

發(fā)現(xiàn)現(xiàn)在工業(yè)SCADA上或者電信網(wǎng)管方面用圖表的特別多,雖然絕大部分人在圖表制作方面用的是echarts,他確實(shí)好用,但是有些時(shí)候我們不能調(diào)用別的插件,這個(gè)時(shí)候就得自己寫(xiě)這些美麗的圖表了,然而圖表輕易做不成美麗的。。??吹接幸粋€(gè)網(wǎng)站上在賣(mài)的圖表,感覺(jué)挺好看的,就用 HT for Web 3D 做了一個(gè)小例子,挺簡(jiǎn)單的,也挺好看的,哈哈~

動(dòng)態(tài)效果圖如下:

基于HTML5 Canvas的3D動(dòng)態(tài)Chart圖表的示例

這個(gè)例子用 HT 實(shí)現(xiàn)真的很容易,首先創(chuàng)建一個(gè) HT 中最基礎(chǔ)的 dm 數(shù)據(jù)模型,然后將數(shù)據(jù)模型添加進(jìn) g3d 3d 組件中,再設(shè)置 3d 中的視角并把 3d 組件添加進(jìn) body 元素中:

dm = new ht.DataModel();
g3d = new ht.graph3d.Graph3dView(dm);
g3d.setEye(0, 185, 300);
g3d.addToDOM();
g3d.getView().style.background = '#000';

接著就是造這五個(gè)chart圖表?xiàng)l了,我的思路是這樣的,里層有一個(gè)節(jié)點(diǎn),外層一個(gè)透明的節(jié)點(diǎn),底部一個(gè) 3d 的文字顯示當(dāng)前的百分比。

里層的節(jié)點(diǎn)非常容易,我直接用的 HT 封裝的 ht.Node 創(chuàng)建了一個(gè)新的節(jié)點(diǎn)對(duì)象,然后通過(guò) node.s 方法來(lái)設(shè)置 node 節(jié)點(diǎn)的樣式:

var node = new ht.Node();
node.s({
    'shape3d': cylinderModel,
    'shape3d.color': color,
    '3d.movable': false
});
node.a({
    'myHeight': s3[1],
});
node.p3([p3[0], s3[1]/2, p3[2]]);
node.s3(s3);
dm.add(node);

其中要說(shuō)明的是,'shape3d':cylinderModel 這個(gè)樣式的設(shè)置,首先,shape3d 屬性指定顯示為 3d 模型的圖標(biāo)效果,cylinderModel 是用 HT 自定義的一個(gè) 3d 模型,可參考 HT for Web 建模手冊(cè):

cylinderModel = ht.Default.createCylinderModel(1000, 0, 1000, false, false, true, true);

然后設(shè)置了一個(gè)動(dòng)態(tài)變化的屬性 myHeight,在 HT 中,node.a 方法是預(yù)留給用戶(hù)存儲(chǔ)業(yè)務(wù)數(shù)據(jù)的,我們可以在這邊添加任意多個(gè)屬性。

接下來(lái)我們要?jiǎng)?chuàng)建的是外部的透明節(jié)點(diǎn),這個(gè)節(jié)點(diǎn)的構(gòu)造方式基本上與內(nèi)部節(jié)點(diǎn)相同,就是多了一點(diǎn)“透明”的樣式設(shè)置:

var cNode = new ht.Node();
cNode.s({
    'shape3d': cylinderModel,
    'shape3d.transparent': true,
    'shape3d.opacity': 0.2,    
    'label.color': '#fff',
    '3d.movable': false
});
cNode.p3([p3[0], 50, p3[2]]);
cNode.s3(20, 100, 20);
dm.add(cNode);

要先設(shè)置 ‘shape3d.transparent’ 為true,再設(shè)置 ‘shape3d.opacity’ 透明度。

最后是 3d 文字,呈現(xiàn) 3d 文字需要一個(gè) json 格式的 typeface 字體,然后通過(guò) ht.Default.loadFontFace 來(lái)加載 json 格式的字體到內(nèi)存中,詳情請(qǐng)參考 HT for Web 3D 手冊(cè):

ht.Default.loadFontFace('./wenquanyi.json', function(){
    //......
    var text = new ht.Node();
    text.s3([5, 5, 5]);
    text.p3(cNode.p3()[0]-5, -10, 0);
    dm.add(text);
    text.s({
        'shape3d' : 'text',
    'shape3d.text': node.a('myHeight')+'%',
    'shape3d.text.curveSegments': 1,
    '3d.movable': false
    });
});

因?yàn)槲覀冇玫?typeface 字體的繪制方式是無(wú)數(shù)個(gè)三角形構(gòu)成的一個(gè)字,會(huì)占用很大的內(nèi)存,所以我把圖形的曲線的精細(xì)度調(diào)得較低,但是還是很清晰,如果你們能找到性能更好的字體,可以使用并且告知我一下,我們目前沒(méi)找到占用內(nèi)存小的字體。

最后,要?jiǎng)討B(tài)的變化 chart 圖表中的柱形圖,我們得設(shè)置動(dòng)畫(huà),并且將 3d 字體也同步更新數(shù)值:

setInterval(function(){
    if(node.a('myHeight') < 100){
        node.a('myHeight', (node.getAttr('myHeight')+1));
    node.s3(20, node.a('myHeight'), 20);
    node.p3(p3[0], node.a('myHeight')/2, p3[2]);
    }else{
        node.a('myHeight', 0);
    node.s3([20, 0, 20]);
    node.p3([p3[0], 0, p3[2]]);
    }
    if (text) text.s('shape3d.text', node.a('myHeight')+'%');
}, 100);

這里,我自定義的屬性 “myHeight” 就起到了決定性的作用,我用這個(gè)屬性來(lái)存儲(chǔ)變量,而且可以任意更改變量的值,這樣就能實(shí)現(xiàn)動(dòng)態(tài)綁定的效果了。

還有不懂的可以留言,或者直接去我們官網(wǎng)上查看手冊(cè) HT for Web,有更多你想不到的效果能快速實(shí)現(xiàn)哦~

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持。

【網(wǎng)站聲明】本站除付費(fèi)源碼經(jīng)過(guò)測(cè)試外,其他素材未做測(cè)試,不保證完整性,網(wǎng)站上部分源碼僅限學(xué)習(xí)交流,請(qǐng)勿用于商業(yè)用途。如損害你的權(quán)益請(qǐng)聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關(guān)文檔推薦

主站蜘蛛池模板: 欧美精品 在线观看 | 国产免费一区二区三区免费视频 | 又爽又黄axxx片免费观看 | 国产a级毛片 | 成人h视频在线 | 亚洲精品视频在线看 | 91精品国产综合久久久久久丝袜 | 久久中文字幕一区 | 色综合一区二区 | 日本高清视频在线播放 | 精品日韩一区二区 | 久久成人一区 | 丝袜美腿一区二区三区动态图 | 精品亚洲一区二区三区 | 中文字幕 在线观看 | 欧美一区二区三区视频在线播放 | 国产露脸国语对白在线 | 久久综合av| 欧美日韩一区二区三区不卡视频 | 日韩有码一区 | www久久国产 | 97成人免费 | 亚洲黄色一级毛片 | 色婷婷一区二区三区四区 | 91精品国产综合久久久久久丝袜 | 久久久www成人免费精品张筱雨 | 久久精品一区二区视频 | 国产视频一区二区 | 成人久草 | 久久狠狠 | 黄色片亚洲 | 午夜三级视频 | 久久亚洲国产精品日日av夜夜 | 国产精品爱久久久久久久 | 99精品国产一区二区青青牛奶 | 欧美日韩亚洲国产 | 国产精品久久久久久久久久 | 一级做a爰片性色毛片16 | 九九色综合 | 国产欧美在线 | 亚洲中午字幕 |