まず、 "クラス"という用語は、私が作業しているもののメインの初期化ファイルとは別のファイルにあるかもしれないプロトタイプを持つ関数を意味します。JavaScriptクラス内でHTML5のキャンバスを正しく使用するにはどうすればよいですか?
私の質問/問題のために: 私はJavaScript/HTML5で何かを構築し、それを「正しく」プログラムしようとしています(つまり、標準のフォーマットでプロトタイプを使用しています)。私のメインのJavaScriptファイルでは、作成するメソッドは、キャンバスを設定するインスタンス(基本的にはOOP /プロトタイプベースのスクリプトのルートインスタンス)を使用しています。
また、クリック可能なボタンを作成するための 'クラス'を含む別のファイルがロードされています。今のところ、ボタンをキャンバスに描画しようとしていますが、インスタンスが有効範囲外であると考えてキャンバスのインスタンスにアクセスできません(これは問題ありません。インスタンスを参照するために長いドット表記法を含めることを私がすべて望む)。しかし、キャンバスに矩形を描画しようとすると、ボタンが入っている「クラス」を考慮して、それ以外のコンテキストを参照することができないので、これは私に問題を起こしています。
私はの線に沿って何かを使用してこの回避する方法を見つけました:
function CreateButton(btn_x, btn_y, btn_width, btn_height, btn_txt) {
// ... (check and define parameters)
CreateButton.prototype.custom_canvas = document.getElementById('root_canvas');
CreateButton.prototype.ctxt = this.custom_canvas.getContext('2d');
CreateButton.prototype.ctxt.fillStyle = '#666666';
CreateButton.prototype.ctxt.fillRect(this.x, this.y, this.width, this.height);
}
基本的には同じ名前のキャンバスとキャンバスの上に書いていますか?後で普通のキャンバスを操作することはできますが、キャンバスが単一のキャンバス要素であるかのように動作すると思います。私はキャンバスを再描画すると多くのことが追加されたときに多くのメモリを消費するかもしれないと心配しましたが、方法にかかわらずキャンバスの上に書くことは避けられません。
何か提案や助け?それとも、同じクラスのキャンバスを別のクラスで使用するのが私の方法ですか?
フィードバックありがとうございます。
[UPDATE] うーんは、多分私は、パラメータとしてコンテキストを渡し、ちょうどそれを使用してみてください。
...キャンバスをグローバルオブジェクトにするだけでいいですか?助言がありますか?