出力する必要がある行と列の数を見つけるには、ウィンドウの幅と高さを確認し、それに応じて変更する必要があります。onResizeイベントをリッスンし、それに応じて幅と高さを変更することを忘れないでください。
あなたはこのテキストの方法をしたい場合は、各セルは一つの文字が含まれている場合は、あなたは、モノスペースフォントとテーブルと、この使用してテキストを行うことができます。
個々の文字をアドレス指定するに<table>
は、正しい数の行と列を使用してを作成します。それぞれに<td>
は、x座標とy座標で構成されるIDがあります。このようにして、IDで個々のセルをアドレス指定し、innerHTMLを変更して文字を変更し、cssクラスを変更して色を変更できます。
ただし、置き換える必要のある文字ごとに大きなDOMツリーを操作する必要がないため、キャンバスを使用した方が高速になる場合があります。ちなみにドワーフフォートレスも同じようなことをしています。オブジェクトを表すために使用される文字は、実際のテキスト出力ではなく、実際にはビットマップであり、2DグラフィックAPIを使用して描画されます。HTML5キャンバスは、これを十分に備えています。それは持っていcontext.fillTextのキャンバスの上にテキストを描画することを可能にする方法を。これは、個々の文字を描くために使用できます。あなたは、変数の操作によってサイズやフォントの顔を変更することができますcontext.font呼び出すことで、それぞれの文字の色をcontext.fillStyleを。
フォントのラスタライズは高価であり、私が知っているどのブラウザもキャッシュを使用していないため、フレームごとに数百回fillTextを呼び出すと遅くなる可能性があることに注意してください。つまり、同じ文字を同じ設定で100回レンダリングすると、100回再ラスタライズされます。パフォーマンスを向上させるには、非表示のキャンバスに各色で各文字のラスタライズされた外観をキャッシュし、context.drawImageを使用してこれらの非表示のキャンバスを描画します。あるキャンバスから別のキャンバスへのコピーは、通常、フォントのラスタライズよりもはるかに高速です。
私は現在キャンバスを使用して2Dゲームを開発していますが、最大のFPSイーターがフォントの描画であることに気付きました。ラスタライズされたテキストのキャッシュを追加すると、パフォーマンスが大幅に向上しました。