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>

我想知道是否有任何枚举或常量来获取 Canvas 的上下文。

Context.2D,Context.3D等(我知道这不是一个真正的常数,只是想知道 JavaScript 或 HTML5 中是否有类似的东西)。

我见过的每一个例子,所做的调用都是简单的getContext("2d"). 这似乎很脆弱,也没有告诉我可能有哪些其他(如果有的话)上下文可用。

4

1 回答 1

8

getContext只调用一次,如果你再次调用它,如果画布已经用不同的上下文类型初始化,它将返回 null。如果您使用相同的上下文类型再次调用它,它将返回相同的上下文。如果画布不支持给定的上下文 ID 字符串,也会返回 Null。

换句话说,每个画布只有一个上下文。

没有告诉我可能有哪些其他(如果有的话)上下文可用。

为此,有一种方法supportsContext(someContextString),它对规范(2012 年 3 月)来说是非常新的,尚未在任何浏览器中实现。

此外setContext,任何浏览器尚不支持此功能(可能在几个晚上)。请注意,这setContext仅在您创建了无头上下文时才有用,因为如果您尝试设置不同的上下文,已经具有上下文的画布(通过使用 getContext)将引发错误。

无论如何,参数是字符串的原因是允许对画布进行特定于浏览器的扩展。毕竟,MS 可能想要实现getContext('2d-directx')(他们可能永远不会真正做到这一点)。

这些天你会看到的唯一字符串是"2d","webgl""webgl-experimental".

于 2013-01-18T20:49:50.747 回答