출력해야 할 줄과 열의 수를 찾으려면 창 너비와 높이를 확인하고 그에 따라 변경해야합니다. onResize 이벤트를 듣고 그에 따라 너비와 높이를 수정하십시오.
텍스트 방식으로이 작업을 수행하려는 경우 고정 폭 글꼴이있는 텍스트와 각 셀에 하나의 문자가 포함 된 테이블을 사용하여이 작업을 수행 할 수 있습니다.
개별 문자를 처리하기 위해 <table>
올바른 수의 행과 열을 를 여기에는 각각 <td>
의 x 및 y 좌표로 구성된 ID가 있습니다. 이렇게하면 ID로 개별 셀을 처리하고 innerHTML을 변경하여 문자를 변경하고 CSS 클래스를 변경하여 색상을 변경할 수 있습니다.
그러나 canvas를 사용하면 교체해야 할 각 문자에 대해 큰 DOM 트리를 조작 할 필요가 없으므로 더 빠를 수 있습니다. 그런데 드워프 요새도 비슷한 일을하고 있습니다. 객체를 나타내는 데 사용되는 문자는 실제로 실제 텍스트 출력이 아닌 비트 맵이며 2D 그래픽 API를 사용하여 그려집니다. 이를 위해 HTML5 캔버스가 잘 갖추어져 있습니다. 캔버스에 텍스트를 그릴 수 있는 context.fillText 메소드가 있습니다. 개별 문자를 그리는 데 사용할 수 있습니다. context.font 변수 와 각 문자의 색상을 조작하여 크기와 글꼴을 변경할 수 있습니다. context.fillStyle을 .
글꼴 래스터 화 글꼴이 비싸고 캐싱을 사용하는 브라우저가 없기 때문에 프레임 당 fillText를 수백 번 호출하면 속도가 느려질 수 있습니다. 즉, 같은 설정으로 같은 문자를 백 번 렌더링하면 문자가 백 번 다시 래스터 화됩니다. 성능을 향상시키기 위해 숨겨진 캔버스에 각 색상으로 각 문자의 래스터 화 된 모양을 캐시 한 다음이 숨겨진 캔버스를 사용하여 그릴 수 있습니다. context.drawImage를 . 한 캔버스에서 다른 캔버스로 복사하는 것은 일반적으로 글꼴 래스터 화보다 훨씬 빠릅니다.
현재 캔버스를 사용하여 2D 게임을 개발 중이며 가장 큰 FPS 먹는 사람이 글꼴 그림이라는 것을 알았습니다. 래스터 화 된 텍스트에 대한 캐시를 추가하면 성능이 크게 향상되었습니다.