국내 경제의 급속한 발전과 함께 사람들의 안전에 대한 요구도 점점 더 높아지고 있습니다. 다음과 같은 상황이 발생하지 않도록 방지하기 위해서는 보안 시스템 설치를 고려해야 합니다. 증거 및 단서 제공: 많은 공장, 은행, 도난 또는 사고에서 관련 기관은 비디오 정보를 기반으로 사건을 감지할 수 있으며 이는 매우 중요합니다. 단서. 이번 글에서는 HTML5 Canvas를 기반으로 지하철 역사 모니터링을 구현하는 방법을 공유하겠습니다.
이 예제의 동적 효과는 다음과 같습니다.
먼저 기본 장면을 빌드해 보겠습니다. HT에서 외부 장면을 내부로 가져오는 가장 일반적인 방법은 JSON 파일을 구문 분석하고 JSON 파일을 사용하여 빌드하는 것입니다. 장면의 장점 중 하나는 재활용이 가능하다는 것입니다. 오늘의 장면은 JSON을 사용하여 그려졌습니다. 다음으로 HT는 ht.Default.xhrLoad 함수를 사용하여 JSON 장면을 로드하고, HT 캡슐화된 DataModel.deserialize(json)를 사용하여 이를 역직렬화한 후 역직렬화된 개체를 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);//缩放平移拓扑以展示所有图元,即让所有的元素都显示出来 });
HT에서는 데이터 type 객체가 생성되면 내부적으로 id 속성이 자동으로 할당됩니다. 이 속성은 data.getId() 및 data.setId(id)를 통해 얻고 설정할 수 있습니다. Data 객체가 DataModel에 추가된 후 id 값은 다음과 같습니다. dataModel.getDataById(id)를 통해 얻을 수 있습니다. 데이터 객체를 빠르게 찾습니다. 일반적으로 HT에 의해 id 속성이 자동으로 할당되는 것이 좋습니다. 사용자의 비즈니스 의미에 대한 고유 식별자는 태그 속성에 저장될 수 있습니다. Data#setTag(tag) 함수는 해당 데이터의 동적 변경을 허용합니다. 개체는 DataModel#getDataByTag(tag)를 통해 찾을 수 있으며 DataModel#removeDataByTag(tag)를 통해 데이터 개체 삭제를 지원합니다. 여기에서는 JSON에서 Data 개체의 태그 속성을 설정하고 코드의 dataModel.getDataByTag(tag) 함수를 통해 Data 개체를 얻습니다.
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');
아래 그림의 각 태그에 해당하는 요소를 만들었습니다.
그런 다음 회전하고 플래싱해야 하는 객체를 설정합니다. HT는 객체의 현재 회전 각도를 가져와 이 각도를 기반으로 특정 라디안을 추가하고 사용합니다. setInterval 정기적으로 호출되어 동일한 호가 특정 시간 간격 내에 회전할 수 있습니다.
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);
HT는 또한 스타일을 설정하는 setStyle 함수를 캡슐화합니다. 특정 스타일은 s로 축약할 수 있습니다. 웹용 HT를 참조하세요. 스타일 매뉴얼:
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); }
us "경고등"의 깜박임도 타이밍 제어됩니다. 짝수 초이면 조명의 배경색이 "무색"으로 설정됩니다. 그렇지 않으면 노란색 경보입니다. "노란색"으로 설정됩니다. redAlarm인 경우 "빨간색"으로 설정됩니다.
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'); }
전체 예제가 너무 쉽게 풀렸습니다. . .
더 많은 것을 배우고 싶은 친구는 HT for Web 공식 웹사이트에 가서 다양한 매뉴얼을 보고 학습할 수 있습니다.
국내 경제의 급속한 발전과 함께 사람들의 안전에 대한 요구도 점점 높아지고 있습니다. 다음과 같은 상황이 발생하지 않도록 방지하기 위해서는 보안 시스템 설치를 고려해야 합니다. 증거 및 단서 제공: 많은 공장, 은행, 도난 또는 사고에서 관련 기관은 비디오 정보를 기반으로 사건을 감지할 수 있으며 이는 매우 중요합니다. 단서. 분쟁이나 사고도 일부 발생하는데, 관련 담당자의 책임은 영상녹화를 통해 쉽게 알 수 있다. 높은 민방위 비용: 요즘 많은 곳에서 안전을 생각할 때 경비원 고용을 생각합니다. 경비원 한 명당 월 800달러가 들고 하루 3교대로 근무하면 연간 40,000위안 정도가 필요합니다. 전자 보안 장비의 가격이 저렴하지 않으며, 몇 년 내에 전자 보안 장비를 교체할 필요성도 적습니다. 따라서 민방위 비용은 상대적으로 높습니다. 민방위 지원: 대부분의 경우 안전을 보장하기 위해 사람에게만 의존하는 것은 매우 어렵습니다. 많은 경우 전자 보안 장비(예: 모니터 및 경보)의 지원이 더 완벽해야 합니다. 특별한 경우에 사용해야 합니다. 일부 가혹한 조건(고열, 추위, 폐쇄 등)에서 사람들이 육안으로 명확하게 관찰하기 어렵거나 환경이 단순히 사람들이 머물기에 적합하지 않기 때문에 전자 보안 장비를 사용해야 합니다. 은폐: 전자 보안 장비를 사용하면 일반 사람들은 항상 감시를 받고 있다는 느낌을 받지 못하고 은폐됩니다. 24시간 보안 보장: 24시간 중단 없는 보안 요구를 충족하려면 전자 장비를 고려해야 합니다. 원격 모니터링: 컴퓨터 기술과 네트워크 기술의 발달로 다양한 장소에서 원격으로 모니터링하고 영상을 보는 것이 가능해졌습니다. 이제 많은 기업의 리더들은 인터넷을 통해 전 세계 어느 지점의 상황을 실시간으로 관찰할 수 있습니다. 적시에 상황을 이해하는 데 도움이됩니다. 영상 보존: 디지털 영상 기술의 발달로 영상을 컴퓨터의 디지털 저장장치를 통해 저장할 수 있게 되면서 보다 오랜 기간 동안 보다 선명한 영상으로 저장할 수 있게 되었습니다. 생산 관리: 관리자는 적시에 직관적인 방식으로 생산 최전선의 상황을 이해할 수 있어 명령 및 관리가 용이합니다.
중국에서는 모니터링 시스템에 대한 수요가 많은 점을 고려하여 지하철 역사 등 대규모 모니터링의 경우 사고 예방을 위한 모니터링 시스템이 필요합니다. 오늘은 지하철 전단부 제작 방법을 소개하겠습니다. 스테이션 모니터링 시스템.
http://www.hightopo.com/demo/... 페이지를 마우스 오른쪽 버튼으로 클릭하고 "요소 검사"를 클릭하면 예제 소스 코드를 볼 수 있습니다.
이 예제의 동적 효과는 다음과 같습니다.
먼저 기본 장면을 빌드해 보겠습니다. HT에서 외부 장면을 내부로 가져오는 가장 일반적인 방법은 JSON 파일을 구문 분석하고 JSON 파일을 사용하여 빌드하는 것입니다. 장면의 장점 중 하나는 재활용이 가능하다는 것입니다. 오늘의 장면은 JSON을 사용하여 그려졌습니다. 다음으로 HT는 ht.Default.xhrLoad 함수를 사용하여 JSON 장면을 로드하고, HT 캡슐화된 DataModel.deserialize(json)를 사용하여 이를 역직렬화한 후 역직렬화된 개체를 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);//缩放平移拓扑以展示所有图元,即让所有的元素都显示出来 });
HT에서는 데이터 type 객체가 생성되면 내부적으로 id 속성이 자동으로 할당됩니다. 이 속성은 data.getId() 및 data.setId(id)를 통해 얻고 설정할 수 있습니다. Data 객체가 DataModel에 추가된 후 id 값은 다음과 같습니다. dataModel.getDataById(id)를 통해 얻을 수 있습니다. 데이터 객체를 빠르게 찾습니다. 일반적으로 HT에 의해 id 속성이 자동으로 할당되는 것이 좋습니다. 사용자의 비즈니스 의미에 대한 고유 식별자는 태그 속성에 저장될 수 있습니다. Data#setTag(tag) 함수는 해당 데이터의 동적 변경을 허용합니다. 개체는 DataModel#getDataByTag(tag)를 통해 찾을 수 있으며 DataModel#removeDataByTag(tag)를 통해 데이터 개체 삭제를 지원합니다. 여기에서는 JSON에서 Data 개체의 태그 속성을 설정하고 코드의 dataModel.getDataByTag(tag) 함수를 통해 Data 개체를 얻습니다.
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');
아래 그림의 각 태그에 해당하는 요소를 만들었습니다.
그런 다음 회전하고 플래싱해야 하는 객체를 설정합니다. HT는 객체의 현재 회전 각도를 가져와 이 각도를 기반으로 특정 라디안을 추가하고 사용합니다. setInterval 정기적으로 호출되어 동일한 호가 특정 시간 간격 내에 회전할 수 있습니다.
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);
HT는 또한 스타일을 설정하는 setStyle 함수를 캡슐화합니다. 특정 스타일은 s로 축약할 수 있습니다. 웹용 HT를 참조하세요. 스타일 매뉴얼:
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); }
us "경고등"의 깜박임도 타이밍 제어됩니다. 짝수 초이면 조명의 배경색이 "무색"으로 설정됩니다. 그렇지 않으면 노란색 경보입니다. "yellow"로 설정되어 있으면 "red"로 설정됩니다.
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'); }
위 내용은 HTML5 Canvas를 기반으로 지하철 역사 모니터링을 구현하는 방법입니다.
관련 권장 사항:
위 내용은 HTML5 Canvas 기반의 지하철역 모니터링 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!