3

私はHTML5を読んだり実験したりし始めました。私が見た HTML5 Canvas のチュートリアルはすべて、JavaScript が ID でキャンバスを取得し、2D コンテキストを取得して、コンテキストを操作するというパターンに従っています。

 <canvas id="myCanvas" width="300" height="200" style="border:1px solid"></canvas>
 <script>
   var c=document.getElementById("myCanvas");
   var ctx=c.getContext("2d");
   ctx.fillStyle="cyan";
   ctx.fillRect(50,50,100,75);
 </script>

キャンバスのコンテキストを取得するための列挙または定数があるかどうか疑問に思っていました。

Context.2DContext.3Dなど (これは実際の定数ではないことはわかっていますが、JavaScript や HTML5 のどこかにそのようなものがあるかどうか疑問に思っています) 。

私が見たすべての例で、行われる呼び出しは単純getContext("2d")です。これは脆弱なようで、他の (もしあれば) コンテキストが利用可能かどうかもわかりません。

4

1 に答える 1

8

一度だけ呼び出しgetContextます。もう一度呼び出すと、キャンバスが別のコンテキスト タイプで既に初期化されている場合は null が返されます。同じコンテキスト タイプで再度呼び出すと、同じコンテキストが返されます。キャンバスが特定のコンテキスト ID 文字列をサポートしていない場合も、Null が返されます。

つまり、各キャンバスにはコンテキストが 1 つしかありません。

他に(もしあれば)どのようなコンテキストが利用可能かはわかりません。

supportsContext(someContextString)これには、どのブラウザにもまだ実装されていない仕様 (2012 年 3 月) では非常に新しいメソッドがあります。

さらにsetContext、どのブラウザーでもまだサポートされていないものがあります (いくつかのナイトリーである可能性があります)。setContext別のコンテキストを設定しようとすると、(getContext を使用して) 既にコンテキストを持っているキャンバスでエラーがスローされるため、これはヘッドレス コンテキストを作成した場合にのみ役立つことに注意してください。

とにかく、引数が文字列である理由は、ブラウザ固有の拡張をキャンバスに許可するためです。結局、MS は実装したいと思うかもしれませんgetContext('2d-directx')(彼らはおそらく実際にこれを行うことはないでしょう)。

最近目にする唯一の文字列は、、、"2d"および"webgl"です"webgl-experimental"

于 2013-01-18T20:49:50.747 に答える