Heim Web-Frontend H5-Tutorial Realisieren Sie die Überwachung von U-Bahn-Stationen auf Basis von HTML5 Canvas

Realisieren Sie die Überwachung von U-Bahn-Stationen auf Basis von HTML5 Canvas

Dec 06, 2017 pm 04:23 PM
canvas html5

Mit der rasanten Entwicklung der heimischen Wirtschaft stellen die Menschen immer höhere Anforderungen an die Sicherheit. Um die folgenden Situationen zu verhindern, müssen Sie über die Installation eines Sicherheitssystems nachdenken: Beweise und Hinweise liefern: In vielen Fabriken, Banken, bei Diebstählen oder Unfällen können die zuständigen Behörden den Fall anhand von Videoinformationen aufdecken, was sehr wichtig ist Hinweis. In diesem Artikel teilen wir Ihnen die Implementierung der U-Bahn-Stationsüberwachung auf Basis von HTML5 Canvas mit.

Der dynamische Effekt dieses Beispiels ist wie folgt:
Realisieren Sie die Überwachung von U-Bahn-Stationen auf Basis von HTML5 Canvas

Lassen Sie uns zuerst die Grundszene erstellen, das ist eine sehr verbreitete Methode zu Externe Szenen werden intern durch Parsen von JSON-Dateien importiert. Einer der Vorteile der Verwendung von JSON-Dateien zum Erstellen von Szenen besteht darin, dass sie wiederverwendet werden können. Unsere heutige Szene wurde mit JSON gezeichnet. Als nächstes verwendet HT die Funktion ht.Default.xhrLoad, um die JSON-Szene zu laden, und verwendet HT-gekapseltes DataModel.deserialize(json), um sie zu deserialisieren und das deserialisierte Objekt zum DataModel hinzuzufügen:

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);//缩放平移拓扑以展示所有图元,即让所有的元素都显示出来
});
Nach dem Login kopieren

In HT wird dem Datentypobjekt intern automatisch ein ID-Attribut zugewiesen, das über data.getId() und data.setId(id) abgerufen und festgelegt werden kann. Der ID-Wert darf nicht sein Geändert, nachdem das Datenobjekt zum Datenmodell hinzugefügt wurde. Mit dataModel.getDataById(id) können Sie schnell Datenobjekte finden. Es wird allgemein empfohlen, dass das ID-Attribut automatisch von HT zugewiesen wird. Die eindeutige Kennung der Geschäftsbedeutung des Benutzers kann im Tag-Attribut gespeichert werden. Die Funktion Data#setTag(tag) ermöglicht jede dynamische Änderung des Tag-Werts Das Objekt kann über DataModel#getDataByTag(tag) gefunden werden und unterstützt das Löschen von Datenobjekten über DataModel#removeDataByTag(tag). Hier legen wir das Tag-Attribut des Datenobjekts in JSON fest und erhalten das Datenobjekt über die Funktion dataModel.getDataByTag(tag) im 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');
Nach dem Login kopieren

Ich habe die entsprechenden Tags für jedes Tag im erstellt Abbildung unten Element:
Realisieren Sie die Überwachung von U-Bahn-Stationen auf Basis von HTML5 Canvas

Dann legen wir das Objekt fest, das gedreht werden muss, und HT kapselt die Funktion „setRotation“ für „Rotation“. Aktueller Status des Objekts Der Rotationswinkel, fügen Sie basierend auf diesem Winkel ein bestimmtes Bogenmaß hinzu und rufen Sie es regelmäßig über setInterval auf, sodass dasselbe Bogenmaß innerhalb eines bestimmten Zeitintervalls gedreht werden kann:

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);
Nach dem Login kopieren

HT auch kapselt die setStyle-Funktion. Wird zum Festlegen des Stils verwendet, der als s abgekürzt werden kann. Informationen zu bestimmten Stilen finden Sie im HT-Handbuch für Web-Stile:

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);
}
Nach dem Login kopieren

Wir steuern auch das Blinken der „Warnleuchte“. " regelmäßig. Wenn es sich um eine gerade Anzahl von Sekunden handelt, stellen Sie einfach die Hintergrundfarbe des Lichts auf „farblos“ ein. Wenn es sich um einen gelben Alarm handelt, stellen Sie es auf „gelb“ ein. Wenn es sich um einen roten Alarm handelt, stellen Sie es auf „rot“ ein. :

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;);
}
Nach dem Login kopieren

Das ganze Beispiel ist so einfach. Es wurde gelöst, es war so einfach. . .

Freunde, die mehr erfahren möchten, können auf der offiziellen Website von HT for Web verschiedene Handbücher zum Lernen ansehen.


Mit der rasanten Entwicklung der heimischen Wirtschaft stellen die Menschen immer höhere Anforderungen an die Sicherheit. Um die folgenden Situationen zu verhindern, müssen Sie über die Installation eines Sicherheitssystems nachdenken: Beweise und Hinweise liefern: In vielen Fabriken, Banken, bei Diebstählen oder Unfällen können die zuständigen Behörden den Fall anhand von Videoinformationen aufdecken, was sehr wichtig ist Hinweis. Es gibt auch einige Streitigkeiten oder Unfälle, und die Verantwortlichkeiten des zuständigen Personals können durch Videoaufzeichnungen leicht ermittelt werden. Hohe Kosten für die zivile Luftverteidigung: Heutzutage denken viele an die Einstellung von Sicherheitskräften. Jeder Sicherheitsbeamte kostet 800 Yuan pro Monat und arbeitet in drei Schichten pro Tag Die Kosten für elektronische Sicherheitsausrüstung sind nicht billig, und es besteht weniger Bedarf, elektronische Sicherheitsausrüstung innerhalb weniger Jahre zu ersetzen. Daher sind die Kosten der zivilen Luftverteidigung relativ hoch. Zivile Luftverteidigungsunterstützung: In den meisten Fällen ist es sehr schwierig, sich bei der Gewährleistung der Sicherheit vollständig auf Menschen zu verlassen. Um die Sicherheit zu gewährleisten, ist die Unterstützung elektronischer Sicherheitsgeräte (z. B. Monitore und Alarme) erforderlich. Es muss zu besonderen Anlässen verwendet werden: Unter bestimmten rauen Bedingungen (hohe Hitze, Kälte, geschlossene Räume usw.) ist es für Menschen schwierig, mit bloßem Auge klar zu sehen, oder die Umgebung ist einfach nicht für den Aufenthalt von Menschen geeignet Es müssen elektronische Sicherheitseinrichtungen verwendet werden. Verschleierung: Durch den Einsatz elektronischer Sicherheitsausrüstung haben normale Menschen nicht das Gefühl, dass sie ständig überwacht werden, und sie sind verschleiert. 24-Stunden-Sicherheitsgarantie: Um den Sicherheitsbedarf rund um die Uhr zu gewährleisten, müssen elektronische Geräte in Betracht gezogen werden. Fernüberwachung: Mit der Entwicklung der Computer- und Netzwerktechnologie ist es möglich geworden, Bilder aus der Ferne von verschiedenen Orten aus zu überwachen und anzusehen. Jetzt können viele Unternehmensleiter die Situation jeder Niederlassung auf der ganzen Welt in Echtzeit über das Internet überwachen trägt dazu bei, die Situation rechtzeitig zu verstehen. Bildkonservierung: Die Entwicklung der digitalen Videotechnologie ermöglicht die Speicherung von Bildern über digitale Speichergeräte des Computers, sodass sie über längere Zeiträume und mit klareren Bildern gespeichert werden können. Produktionsmanagement: Manager können die Situation an vorderster Front der Produktion zeitnah und intuitiv verstehen, was die Führung und Verwaltung erleichtert.

Angesichts des großen Bedarfs an Überwachungssystemen in China werden Überwachungssysteme für die großflächige Überwachung, beispielsweise von U-Bahn-Stationen, benötigt, um Unfälle zu verhindern. Heute stellen wir Ihnen vor, wie Sie eine U-Bahn-Stationsüberwachung erstellen können System. Der Front-End-Teil des Systems.

http://www.hightopo.com/demo/... Klicken Sie mit der rechten Maustaste auf die Seite und wählen Sie „Element prüfen“, um den Beispielquellcode anzuzeigen.

Der dynamische Effekt dieses Beispiels ist wie folgt:
Realisieren Sie die Überwachung von U-Bahn-Stationen auf Basis von HTML5 Canvas

Lassen Sie uns zuerst die Grundszene erstellen, das ist eine sehr verbreitete Methode zu Externe Szenen werden intern durch Parsen von JSON-Dateien importiert. Einer der Vorteile der Verwendung von JSON-Dateien zum Erstellen von Szenen besteht darin, dass sie wiederverwendet werden können. Unsere heutige Szene wurde mit JSON gezeichnet. Als nächstes verwendet HT die Funktion ht.Default.xhrLoad, um die JSON-Szene zu laden, und verwendet HT-gekapseltes DataModel.deserialize(json), um sie zu deserialisieren und das deserialisierte Objekt zum DataModel hinzuzufügen:

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);//缩放平移拓扑以展示所有图元,即让所有的元素都显示出来
});
Nach dem Login kopieren

In HT wird dem Datentypobjekt intern automatisch ein ID-Attribut zugewiesen, das über data.getId() und data.setId(id) abgerufen und festgelegt werden kann. Der ID-Wert darf nicht sein Geändert, nachdem das Datenobjekt zum Datenmodell hinzugefügt wurde. Mit dataModel.getDataById(id) können Sie schnell Datenobjekte finden. Es wird allgemein empfohlen, dass das ID-Attribut automatisch von HT zugewiesen wird. Die eindeutige Kennung der Geschäftsbedeutung des Benutzers kann im Tag-Attribut gespeichert werden. Die Funktion Data#setTag(tag) ermöglicht jede dynamische Änderung des Tag-Werts Das Objekt kann über DataModel#getDataByTag(tag) gefunden werden und unterstützt das Löschen von Datenobjekten über DataModel#removeDataByTag(tag). Hier legen wir das Tag-Attribut des Datenobjekts in JSON fest und erhalten das Datenobjekt über die Funktion dataModel.getDataByTag(tag) im 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;);
Nach dem Login kopieren

Ich habe die entsprechenden Tags für jedes Tag im erstellt Abbildung unten Element:
Realisieren Sie die Überwachung von U-Bahn-Stationen auf Basis von HTML5 Canvas

Dann legen wir das Objekt fest, das gedreht werden muss, und HT kapselt die Funktion „setRotation“ für „Rotation“. Aktueller Status des Objekts Der Rotationswinkel, fügen Sie basierend auf diesem Winkel ein bestimmtes Bogenmaß hinzu und rufen Sie es regelmäßig über setInterval auf, sodass dasselbe Bogenmaß innerhalb eines bestimmten Zeitintervalls gedreht werden kann:

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);
Nach dem Login kopieren

HT auch kapselt die setStyle-Funktion. Wird zum Festlegen des Stils verwendet, der als s abgekürzt werden kann. Informationen zu bestimmten Stilen finden Sie im HT-Handbuch für Web-Stile:

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);
}
Nach dem Login kopieren

Wir steuern auch das Blinken der „Warnleuchte“. " regelmäßig. Wenn es sich um eine gerade Anzahl von Sekunden handelt, stellen Sie einfach die Hintergrundfarbe des Lichts auf „farblos“ ein. Wenn es sich um einen gelben Alarm handelt, stellen Sie es auf „gelb“ ein. Wenn es sich um einen roten Alarm handelt, stellen Sie es auf „rot“ ein. :

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');
}
Nach dem Login kopieren

Der obige Inhalt basiert auf HTML5 Canvas. Die Methode zur Realisierung der U-Bahn-Stationsüberwachung. Ich hoffe, sie kann allen helfen.

Verwandte Empfehlungen:

MySQL-Skript für die automatische Überwachung und Synchronisierung

Empfohlene 10 Beispiel-Tutorials für Überwachungsskripte

10 empfohlene Artikel zum Thema Serverüberwachung

Das obige ist der detaillierte Inhalt vonRealisieren Sie die Überwachung von U-Bahn-Stationen auf Basis von HTML5 Canvas. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Tabellenrahmen in HTML Tabellenrahmen in HTML Sep 04, 2024 pm 04:49 PM

Anleitung zum Tabellenrahmen in HTML. Hier besprechen wir verschiedene Möglichkeiten zum Definieren von Tabellenrändern anhand von Beispielen für den Tabellenrand in HTML.

HTML-Rand links HTML-Rand links Sep 04, 2024 pm 04:48 PM

Anleitung zum HTML-Rand links. Hier besprechen wir einen kurzen Überblick über HTML margin-left und seine Beispiele sowie seine Code-Implementierung.

Verschachtelte Tabelle in HTML Verschachtelte Tabelle in HTML Sep 04, 2024 pm 04:49 PM

Dies ist eine Anleitung für verschachtelte Tabellen in HTML. Hier diskutieren wir anhand der entsprechenden Beispiele, wie man eine Tabelle innerhalb der Tabelle erstellt.

HTML-Tabellenlayout HTML-Tabellenlayout Sep 04, 2024 pm 04:54 PM

Leitfaden zum HTML-Tabellenlayout. Hier besprechen wir die Werte des HTML-Tabellenlayouts zusammen mit den Beispielen und Ausgaben im Detail.

HTML-Eingabeplatzhalter HTML-Eingabeplatzhalter Sep 04, 2024 pm 04:54 PM

Leitfaden für HTML-Eingabeplatzhalter. Hier besprechen wir die Beispiele für HTML-Eingabeplatzhalter zusammen mit den Codes und Ausgaben.

HTML-geordnete Liste HTML-geordnete Liste Sep 04, 2024 pm 04:43 PM

Leitfaden zur HTML-geordneten Liste. Hier besprechen wir auch die Einführung von HTML-geordneten Listen und Typen sowie deren Beispiele

Text in HTML verschieben Text in HTML verschieben Sep 04, 2024 pm 04:45 PM

Anleitung zum Verschieben von Text in HTML. Hier besprechen wir eine Einführung, wie Marquee-Tags funktionieren, mit Syntax und Beispielen für die Implementierung.

HTML-Onclick-Button HTML-Onclick-Button Sep 04, 2024 pm 04:49 PM

Anleitung zum HTML-OnClick-Button. Hier diskutieren wir deren Einführung, Funktionsweise, Beispiele und Onclick-Events in verschiedenen Veranstaltungen.

See all articles