Maison > interface Web > Tutoriel H5 > le corps du texte

Comment utiliser H5 WebGL pour créer des graphiques json et echarts dans la même interface

php中世界最好的语言
Libérer: 2018-01-29 10:14:13
original
2389 Les gens l'ont consulté

Cette fois, je vais vous montrer comment utiliser le WebGL de H5 pour créer des graphiques json et echarts sur la même interface. Quelles sont les précautions pour utiliser le WebGL de H5 pour créer des graphiques json et echarts sur la même interface. , ce qui suit est un cas pratique, jetons un coup d'œil.

Tout à coup, j'ai eu une idée. Si je pouvais mettre des points de connaissances qui sont utilisés de différentes manières sur la même interface et les mettre dans une boîte, alors si je veux voir quelque chose, cela pourrait être affiché directement, et La boîte doit pouvoir être ouverte. J'ai utilisé HT pour réaliser mon idée, avec plus de 100 lignes de code. Je pense que c'est génial qu'une si petite quantité de code puisse obtenir cet effet.

La chose la plus fondamentale dans cet exemple est la boîte la plus externe, alors voyons d'abord comment l'implémenter :

var box = new ht.CSGBox();
dataModel.add(box);
Copier après la connexion

Cette boîte peut être facilement implémentée en utilisant HT In HT. Il encapsule de nombreux types primitifs de base, et ht.Node, que nous utilisons souvent, en fait également partie, afin que nous puissions terminer l'implémentation de base sans écrire le même code à plusieurs reprises.

La primitive de base encapsulée utilisée dans cet exemple est ht.CSGBox, un modèle de boîte Vous pouvez vous référer au manuel de modélisation HT pour le Web. On peut voir dans le manuel que dans CSGBox. , nous ne pouvons exploiter que tous les aspects de la box. Si vous souhaitez définir vous-même certaines fonctions spéciales, il vous suffit d'utiliser ht.Style (HT pour Web Style Manual).

Pour ajouter une texture à une face de la boîte, la seule chose à laquelle je pense est la fonction ht.Default.setImage encapsulée en HT.

La méthode que j'ai implémentée ici consiste à opérer en référence à l'éditeur de HT, en redéclarant un composant graphview et un modèle de données datamodel, puis en appelant json via la méthode ht.Default.xhrLoad, en utilisant ht.Default dans la méthode .parse convertit le texte au format json, puis le désérialise pour afficher le contenu en json dans une interface visuelle, puis définit l' animation , puis rafraîchit immédiatement l'interface à l'aide de ce json, sinon même si l'animation est réglé, l'image ne changera pas.

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);
Copier après la connexion

Pour le moment, je ne peux pas ajouter PumpGV et g3d au div sous-jacent, et mon intention est d'ajouter PumpGV d'un côté de la CSGBox dans g3d, donc pour que PumpGV soit affiché, il doit être défini La largeur et la hauteur de PumpGV, et cette largeur et cette hauteur doivent être plus grandes que la zone occupée par l'image dessinée par mon json, sinon l'affichage sera incomplet. Si vous souhaitez voir l'impact de cette largeur et de cette hauteur sur l'écran, vous pouvez la modifier vous-même et vous amuser.

pumpGV.getWidth = function() { return 600;}
pumpGV.getHeight = function(){ return 600;}
pumpGV.getCanvas().dynamic = true;//设置这个是为了让canvas能动态显示
Copier après la connexion

L'affichage des graphiques echarts est également très basique. Il suffit d'ajouter canvas.dynamic = true et d'actualiser gv en temps réel.

Enfin, il vous suffit de transmettre ces deux toiles renvoyées dans ht.Default.setImage :

ht.Default.setImage('echart', charts(option));
ht.Default.setImage('pump', pumpGV.getCanvas());
Copier après la connexion

La fonction ht.Default.drawImage génère en fait une nouvelle image. Elle dessine sur la toile , il nous suffit donc de transmettre le canevas que nous avons dessiné à ht.Default.setImage pour générer l'image.

Il y a une chose qui doit être améliorée. Nous pouvons voir qu'il y a un cercle de bords irréguliers autour des segments de ligne, des graphiques et du texte sur la boîte, car lorsque nous définissons la police, nous définissons également. translucidité. Le style "blend" sera désactivé Pour le moment, nous ne pouvons pas contrôler le style. Généralement, lorsqu'il y a de la transparence, nous devons définir "all.transparent" sur true

Je vous crois. Je l'ai maîtrisé après avoir lu ces cas. Méthode, pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !

Lecture connexe :

Comment utiliser l'attribut title du HTML pour afficher du texte au survol de la souris

Comment utiliser la balise a Comment résoudre l'incohérence entre l'attribut href et l'événement onclick

la taille du curseur dans la zone de saisie

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!