Maison interface Web Tutoriel H5 Réaliser la surveillance des stations de métro basée sur HTML5 Canvas

Réaliser la surveillance des stations de métro basée sur HTML5 Canvas

Dec 06, 2017 pm 04:23 PM
canvas html5

Avec le développement rapide de l'économie nationale, les gens ont des exigences de plus en plus élevées en matière de sécurité. Afin d'éviter que les situations suivantes ne se produisent, vous devez envisager d'installer un système de sécurité : Fournir des preuves et des indices : Dans de nombreuses usines, banques, vols ou accidents, les agences compétentes peuvent détecter le cas sur la base d'informations vidéo, ce qui est un élément très important. indice. Dans cet article, nous partagerons avec vous la mise en œuvre de la surveillance des stations de métro basée sur HTML5 Canvas.

L'effet dynamique de cet exemple est le suivant :
Réaliser la surveillance des stations de métro basée sur HTML5 Canvas

Construisons d'abord la scène de base En HT, c'est une méthode très courante. Les scènes externes sont importées en interne en analysant les fichiers JSON. L'un des avantages de l'utilisation de fichiers JSON pour créer des scènes est qu'ils peuvent être recyclés. Notre scène d'aujourd'hui a été dessinée en utilisant JSON. Ensuite, HT utilisera la fonction ht.Default.xhrLoad pour charger la scène JSON, utilisera DataModel.deserialize(json) encapsulé HT pour la désérialiser et ajoutera l'objet désérialisé au DataModel :

ht.Default.xhrLoad('demo2.json', function(text) {
    var json = ht.Default.parse(text);
    if(json.title) document.title = json.title;//将 JSON 文件中的 titile 赋给全局变量 titile 
    dataModel.deserialize(json);//反序列化
    graphView.fitContent(true);//缩放平移拓扑以展示所有图元,即让所有的元素都显示出来
});
Copier après la connexion

Dans HT, lorsque l'objet de type Data est construit, un attribut id lui sera automatiquement attribué en interne, qui peut être obtenu et défini via data.getId() et data.setId(id). La valeur id n'est pas autorisée. modifié après l'ajout de l'objet Data au DataModel. Vous pouvez utiliser dataModel.getDataById(id) pour trouver rapidement les objets Data. Il est généralement recommandé que l'attribut id soit automatiquement attribué par HT. L'identifiant unique de l'importance commerciale de l'utilisateur peut être stocké dans l'attribut tag. La fonction Data#setTag(tag) permet toute modification dynamique de la valeur de la balise. L'objet peut être trouvé via DataModel#getDataByTag(tag) et prend en charge la suppression d'objets Data via DataModel#removeDataByTag(tag). Ici, nous définissons l'attribut tag de l'objet Data en JSON et obtenons l'objet Data via la fonction dataModel.getDataByTag(tag) dans le code :

var fan1 = dataModel.getDataByTag('fan1');
var fan2 = dataModel.getDataByTag('fan2');
var camera1 = dataModel.getDataByTag('camera1');
var camera2 = dataModel.getDataByTag('camera2');
var camera3 = dataModel.getDataByTag('camera3');
var redAlarm = dataModel.getDataByTag('redAlarm');
var yellowAlarm = dataModel.getDataByTag('yellowAlarm');
Copier après la connexion

J'ai créé les balises correspondantes pour chaque balise dans le figure ci-dessous Élément :
Réaliser la surveillance des stations de métro basée sur HTML5 Canvas

Ensuite, nous définissons l'objet qui doit pivoter et flasher HT encapsule la fonction setRotation(rotation) pour "rotation". état actuel de l'objet L'angle de rotation, ajoutez un certain radian en fonction de cet angle et appelez-le régulièrement via setInterval, afin que le même radian puisse pivoter dans un certain intervalle de temps :

setInterval(function(){
    var time = new Date().getTime();
    var deltaTime = time - lastTime;
    var deltaRotation = deltaTime * Math.PI / 180 * 0.1;
    lastTime = time;

    fan1.setRotation(fan1.getRotation() + deltaRotation*3);
    fan2.setRotation(fan2.getRotation() + deltaRotation*3);
    camera1.setRotation(camera1.getRotation() + deltaRotation/3);
    camera2.setRotation(camera2.getRotation() + deltaRotation/3);
    camera3.setRotation(camera3.getRotation() + deltaRotation/3);

    if (time - stairTime > 500) {
        stairIndex--;
        if (stairIndex < 0) {
            stairIndex = 8;
        }
        stairTime = time;
    }

    for (var i = 0; i < 8; i++) {//因为有一些相似的元素我们设置的 tag 名类似,只是在后面换成了1、2、3,所以我们通过 for 循环来获取
        var color = stairIndex === i ? &#39;#F6A623&#39; : &#39;#CFCFCF&#39;;
        dataModel.getDataByTag(&#39;stair_1_&#39; + i).s(&#39;shape.border.color&#39;, color);
        dataModel.getDataByTag(&#39;stair_2_&#39; + i).s(&#39;shape.border.color&#39;, color);
    }

    if (new Date().getSeconds() % 2 === 1) {
        yellowAlarm.s(&#39;shape.background&#39;, null);
        redAlarm.s(&#39;shape.background&#39;, null);
    }
    else {
        yellowAlarm.s(&#39;shape.background&#39;, &#39;yellow&#39;);
        redAlarm.s(&#39;shape.background&#39;, &#39;red&#39;);
    }
}, 5);
Copier après la connexion

HT également encapsule la fonction setStyle Utilisé pour définir le style, qui peut être abrégé en s. Pour des styles spécifiques, veuillez vous référer au manuel de style HT for Web :

for (var i = 0; i < 8; i++) {//因为有一些相似的元素我们设置的 tag 名类似,只是在后面换成了1、2、3,所以我们通过 for 循环来获取
    var color = stairIndex === i ? &#39;#F6A623&#39; : &#39;#CFCFCF&#39;;
    dataModel.getDataByTag(&#39;stair_1_&#39; + i).s(&#39;shape.border.color&#39;, color);
    dataModel.getDataByTag(&#39;stair_2_&#39; + i).s(&#39;shape.border.color&#39;, color);
}
Copier après la connexion

Nous contrôlons également le clignotement du "voyant d'avertissement". " régulièrement. Si c'est un nombre pair de secondes, réglez simplement la couleur de fond de la lumière sur "incolore", sinon, si elle est jauneAlarm, réglez-la sur "jaune", si elle est rougeAlarm, réglez-la sur "rouge". :

if (new Date().getSeconds() % 2 === 1) {
    yellowAlarm.s(&#39;shape.background&#39;, null);
    redAlarm.s(&#39;shape.background&#39;, null);
}
else {
    yellowAlarm.s(&#39;shape.background&#39;, &#39;yellow&#39;);
    redAlarm.s(&#39;shape.background&#39;, &#39;red&#39;);
}
Copier après la connexion

L'exemple entier est si simple Il a été résolu, c'était si facile. . .

Les amis qui souhaitent en savoir plus peuvent se rendre sur le site officiel de HT for Web pour consulter divers manuels à apprendre.


Avec le développement rapide de l'économie nationale, les gens ont des exigences de plus en plus élevées en matière de sécurité. Afin d'éviter que les situations suivantes ne se produisent, vous devez envisager d'installer un système de sécurité : Fournir des preuves et des indices : Dans de nombreuses usines, banques, vols ou accidents, les agences compétentes peuvent détecter le cas sur la base d'informations vidéo, ce qui est un élément très important. indice. Il y a également quelques litiges ou accidents, et les responsabilités du personnel concerné peuvent être facilement trouvées grâce à l'enregistrement vidéo. Coût élevé de la défense aérienne civile : De nos jours, lorsque de nombreux endroits pensent à la sécurité, ils pensent à embaucher des agents de sécurité. Chaque agent de sécurité coûte 800 par mois et travaille trois équipes par jour. Une équipe nécessite près de 40 000 yuans par an. le coût des équipements de sécurité électroniques n'est pas bon marché et il est moins nécessaire de remplacer les équipements de sécurité électroniques d'ici quelques années. Le coût de la défense aérienne civile est donc relativement élevé. Assistance à la défense aérienne civile : dans la plupart des cas, il est très difficile de compter entièrement sur les humains pour assurer la sécurité. De nombreuses choses nécessitent l'assistance d'équipements de sécurité électroniques (tels que des moniteurs et des alarmes) pour être plus parfaits. Il doit être utilisé dans des occasions spéciales : dans certaines conditions difficiles (chaleur élevée, froid, fermé, etc.), il est difficile pour les gens d'observer clairement à l'œil nu, ou l'environnement n'est tout simplement pas adapté pour que les gens restent, donc un équipement de sécurité électronique doit être utilisé. Dissimulation : grâce à l'équipement de sécurité électronique, les gens ordinaires n'auront pas l'impression d'être surveillés en permanence, et cela est dissimulé. Garantie de sécurité 24 heures sur 24 : pour répondre aux besoins de sécurité ininterrompus 24 heures sur 24, les équipements électroniques doivent être pris en compte. Surveillance à distance : Avec le développement de la technologie informatique et de la technologie des réseaux, il est devenu possible de surveiller et de regarder des images à distance depuis différents endroits. Désormais, de nombreux dirigeants d'entreprise peuvent surveiller la situation de n'importe quelle succursale dans le monde en temps réel via Internet, ce qui est pratique. propice à une compréhension rapide de la situation. Préservation des images : Le développement de la technologie vidéo numérique permet de sauvegarder les images via des dispositifs de stockage numérique informatiques, ce qui leur permet d'être sauvegardées pendant des périodes plus longues et avec des images plus claires. Gestion de la production : les gestionnaires peuvent comprendre la situation en première ligne de production de manière rapide et intuitive, ce qui facilite le commandement et la gestion.

Compte tenu de la forte demande de systèmes de surveillance en Chine, des systèmes de surveillance sont nécessaires pour la surveillance à grande échelle, comme les stations de métro, afin de prévenir les accidents. Aujourd'hui, nous allons vous présenter comment créer une surveillance des stations de métro. système. La partie frontale du système.

http://www.hightopo.com/demo/... Faites un clic droit sur la page et « Inspecter l'élément » pour afficher l'exemple de code source.

L'effet dynamique de cet exemple est le suivant :
Réaliser la surveillance des stations de métro basée sur HTML5 Canvas

Construisons d'abord la scène de base En HT, c'est une méthode très courante. Les scènes externes sont importées en interne en analysant les fichiers JSON. L'un des avantages de l'utilisation de fichiers JSON pour créer des scènes est qu'ils peuvent être recyclés. Notre scène d'aujourd'hui a été dessinée en utilisant JSON. Ensuite, HT utilisera la fonction ht.Default.xhrLoad pour charger la scène JSON, utilisera DataModel.deserialize(json) encapsulé HT pour la désérialiser et ajoutera l'objet désérialisé au DataModel :

ht.Default.xhrLoad(&#39;demo2.json&#39;, function(text) {
    var json = ht.Default.parse(text);
    if(json.title) document.title = json.title;//将 JSON 文件中的 titile 赋给全局变量 titile 
    dataModel.deserialize(json);//反序列化
    graphView.fitContent(true);//缩放平移拓扑以展示所有图元,即让所有的元素都显示出来
});
Copier après la connexion

Dans HT, lorsque l'objet de type Data est construit, un attribut id lui sera automatiquement attribué en interne, qui peut être obtenu et défini via data.getId() et data.setId(id). La valeur id n'est pas autorisée. modifié après l'ajout de l'objet Data au DataModel. Vous pouvez utiliser dataModel.getDataById(id) pour trouver rapidement les objets Data. Il est généralement recommandé que l'attribut id soit automatiquement attribué par HT. L'identifiant unique de l'importance commerciale de l'utilisateur peut être stocké dans l'attribut tag. La fonction Data#setTag(tag) permet toute modification dynamique de la valeur de la balise. L'objet peut être trouvé via DataModel#getDataByTag(tag) et prend en charge la suppression d'objets Data via DataModel#removeDataByTag(tag). Ici, nous définissons l'attribut tag de l'objet Data en JSON et obtenons l'objet Data via la fonction dataModel.getDataByTag(tag) dans le code :

var fan1 = dataModel.getDataByTag(&#39;fan1&#39;);
var fan2 = dataModel.getDataByTag(&#39;fan2&#39;);
var camera1 = dataModel.getDataByTag(&#39;camera1&#39;);
var camera2 = dataModel.getDataByTag(&#39;camera2&#39;);
var camera3 = dataModel.getDataByTag(&#39;camera3&#39;);
var redAlarm = dataModel.getDataByTag(&#39;redAlarm&#39;);
var yellowAlarm = dataModel.getDataByTag(&#39;yellowAlarm&#39;);
Copier après la connexion

J'ai créé les balises correspondantes pour chaque balise dans le figure ci-dessous Élément :
Réaliser la surveillance des stations de métro basée sur HTML5 Canvas

Ensuite, nous définissons l'objet qui doit pivoter et flasher HT encapsule la fonction setRotation(rotation) pour "rotation". état actuel de l'objet L'angle de rotation, ajoutez un certain radian en fonction de cet angle et appelez-le régulièrement via setInterval, afin que le même radian puisse pivoter dans un certain intervalle de temps :

setInterval(function(){
    var time = new Date().getTime();
    var deltaTime = time - lastTime;
    var deltaRotation = deltaTime * Math.PI / 180 * 0.1;
    lastTime = time;

    fan1.setRotation(fan1.getRotation() + deltaRotation*3);
    fan2.setRotation(fan2.getRotation() + deltaRotation*3);
    camera1.setRotation(camera1.getRotation() + deltaRotation/3);
    camera2.setRotation(camera2.getRotation() + deltaRotation/3);
    camera3.setRotation(camera3.getRotation() + deltaRotation/3);

    if (time - stairTime > 500) {
        stairIndex--;
        if (stairIndex < 0) {
            stairIndex = 8;
        }
        stairTime = time;
    }

    for (var i = 0; i < 8; i++) {//因为有一些相似的元素我们设置的 tag 名类似,只是在后面换成了1、2、3,所以我们通过 for 循环来获取
        var color = stairIndex === i ? '#F6A623' : '#CFCFCF';
        dataModel.getDataByTag('stair_1_' + i).s('shape.border.color', color);
        dataModel.getDataByTag('stair_2_' + i).s('shape.border.color', color);
    }

    if (new Date().getSeconds() % 2 === 1) {
        yellowAlarm.s('shape.background', null);
        redAlarm.s('shape.background', null);
    }
    else {
        yellowAlarm.s('shape.background', 'yellow');
        redAlarm.s('shape.background', 'red');
    }
}, 5);
Copier après la connexion

HT également encapsule la fonction setStyle Utilisé pour définir le style, qui peut être abrégé en s. Pour des styles spécifiques, veuillez vous référer au manuel de style HT for Web :

for (var i = 0; i < 8; i++) {//因为有一些相似的元素我们设置的 tag 名类似,只是在后面换成了1、2、3,所以我们通过 for 循环来获取
    var color = stairIndex === i ? '#F6A623' : '#CFCFCF';
    dataModel.getDataByTag('stair_1_' + i).s('shape.border.color', color);
    dataModel.getDataByTag('stair_2_' + i).s('shape.border.color', color);
}
Copier après la connexion

Nous contrôlons également le clignotement du "voyant d'avertissement". " régulièrement. Si c'est un nombre pair de secondes, réglez simplement la couleur de fond de la lumière sur "incolore", sinon, si elle est jauneAlarm, réglez-la sur "jaune", si elle est rougeAlarm, réglez-la sur "rouge". :

if (new Date().getSeconds() % 2 === 1) {
    yellowAlarm.s('shape.background', null);
    redAlarm.s('shape.background', null);
}
else {
    yellowAlarm.s('shape.background', 'yellow');
    redAlarm.s('shape.background', 'red');
}
Copier après la connexion

Le contenu ci-dessus est basé sur HTML5 Canvas. La méthode de réalisation de la surveillance des stations de métro, j'espère qu'elle pourra aider tout le monde.

Recommandations associées :

Script mysql pour la surveillance et la synchronisation automatiques

10 exemples de didacticiels recommandés pour la surveillance des scripts

10 articles recommandés sur la surveillance des serveurs

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!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Bordure de tableau en HTML Bordure de tableau en HTML Sep 04, 2024 pm 04:49 PM

Guide de la bordure de tableau en HTML. Nous discutons ici de plusieurs façons de définir une bordure de tableau avec des exemples de bordure de tableau en HTML.

Marge gauche HTML Marge gauche HTML Sep 04, 2024 pm 04:48 PM

Guide de la marge HTML gauche. Nous discutons ici d'un bref aperçu de la marge gauche HTML et de ses exemples ainsi que de son implémentation de code.

Tableau imbriqué en HTML Tableau imbriqué en HTML Sep 04, 2024 pm 04:49 PM

Ceci est un guide des tableaux imbriqués en HTML. Nous discutons ici de la façon de créer un tableau dans le tableau ainsi que des exemples respectifs.

Disposition du tableau HTML Disposition du tableau HTML Sep 04, 2024 pm 04:54 PM

Guide de mise en page des tableaux HTML. Nous discutons ici des valeurs de la mise en page des tableaux HTML ainsi que des exemples et des résultats en détail.

Espace réservé d'entrée HTML Espace réservé d'entrée HTML Sep 04, 2024 pm 04:54 PM

Guide de l'espace réservé de saisie HTML. Nous discutons ici des exemples d'espace réservé d'entrée HTML ainsi que des codes et des sorties.

Liste ordonnée HTML Liste ordonnée HTML Sep 04, 2024 pm 04:43 PM

Guide de la liste ordonnée HTML. Ici, nous discutons également de l'introduction de la liste et des types HTML ordonnés ainsi que de leur exemple respectivement.

Déplacer du texte en HTML Déplacer du texte en HTML Sep 04, 2024 pm 04:45 PM

Guide pour déplacer du texte en HTML. Nous discutons ici d'une introduction, du fonctionnement des balises de sélection avec la syntaxe et des exemples à implémenter.

Bouton HTML onclick Bouton HTML onclick Sep 04, 2024 pm 04:49 PM

Guide du bouton HTML onclick. Nous discutons ici de leur introduction, de leur fonctionnement, des exemples et de l'événement onclick dans divers événements respectivement.

See all articles