Untuk mengetahui jumlah garis dan kolom yang Anda perlu hasilkan, Anda harus memeriksa lebar dan tinggi jendela dan mengubahnya sesuai. Ingatlah untuk mendengarkan acara onResize dan memodifikasi lebar dan tinggi sesuai dengan itu.
Saat Anda ingin melakukan ini dengan cara tekstual , Anda bisa melakukan ini menggunakan teks dengan font monospace dan tabel di mana setiap sel berisi satu karakter.
Untuk mengatasi masing-masing karakter, Anda dapat membuat a <table>
dengan jumlah baris dan kolom yang benar, di mana masing-masing <td>
memiliki ID yang terdiri dari koordinat x dan y. Dengan cara itu Anda dapat mengatasi sel-sel individual dengan ID dan mengubah innerHTML mereka untuk mengubah huruf dan mengubah kelas css mereka untuk mengubah warna mereka.
Namun, menggunakan kanvas mungkin lebih cepat karena Anda tidak harus memanipulasi pohon DOM besar untuk setiap karakter yang harus Anda ganti. Omong kosong, Benteng melakukan hal yang serupa. Karakter yang digunakan untuk mewakili objek sebenarnya adalah bitmap, bukan output teks asli, dan mereka digambar menggunakan API grafis 2d. Kanvas HTML5 dilengkapi dengan baik untuk ini. Ini memiliki metode context.fillText yang memungkinkan Anda untuk menggambar teks di kanvas. Ini dapat digunakan untuk menggambar karakter individu. Anda dapat mengubah ukuran dan wajah font dengan memanipulasi variabel context.font dan warna setiap huruf dengan memanggil context.fillStyle .
Perhatikan bahwa memanggil fillText ratusan kali per frame bisa lambat, karena font rasterisasi mahal dan tidak ada browser yang saya tahu menggunakan cache. Itu berarti bahwa ketika Anda merender surat yang sama dengan pengaturan yang sama seratus kali, itu akan diraster ulang seratus kali. Untuk meningkatkan kinerja Anda bisa men-cache penampilan raster dari setiap huruf dengan setiap warna pada kanvas tersembunyi dan kemudian menggambar kanvas tersembunyi ini menggunakan context.drawImage . Menyalin dari satu kanvas ke kanvas lain biasanya jauh lebih cepat daripada rasterisasi font.
Saat ini saya sedang mengembangkan game 2d menggunakan kanvas, dan memperhatikan bahwa pemakan FPS terbesar adalah menggambar font. Ketika saya menambahkan cache untuk teks raster, itu banyak meningkatkan kinerja.