【发布时间】:2011-04-22 23:07:39
【问题描述】:
我目前正在寻找一种方法来创建画布 2d 渲染上下文,而实际上页面上没有画布元素。我可以动态创建一个画布元素并将其隐藏,但是我又不想在任何时候直接向用户显示图像,因此在页面中实际上没有画布元素。所以我基本上是在寻找类似的东西
var image = new Image( );
但仅适用于 canvas 2d 渲染上下文(伪代码)
var context = new 2dContext( );
有这样的功能吗?我找不到类似的东西。调用
var context = new CanvasRenderingContext2D( );
这是 HTML5 规范的渲染上下文接口的名称,只是在 Firefox 中给我带来了尴尬的错误:
uncaught exception: [Exception... "Cannot convert WrappedNative to function" nsresult: "0x8057000d (NS_ERROR_XPC_CANT_CONVERT_WN_TO_FUN)" location: "JS frame :: http://localhost/ :: <TOP_LEVEL> :: line 25" data: no]
【问题讨论】:
-
那么上下文的意义何在?可能有更好的方法可以在不使用上下文的情况下完成您想做的事情。是什么让您决定使用上下文?需要什么?
-
我正在开发一个基于浏览器的棋盘游戏实现,它使用画布来绘制棋盘。一个重要的特点是棋盘实际上比你的视口大,所以你必须能够平移。平移需要非常高的刷新率才能看起来流畅,而当前的 ECMA Script + Canvas 实现根本无法提供这种性能。因此,我打算使用一种缓冲方法,将整个板子绘制到一个不可见的上下文中,每当发生变化并将该上下文的部分剪辑到视口画布中以(显着地)提高刷新率。
-
如果您不需要任何太花哨/复杂的东西,您通常可以摆脱使用/滥用 HTML 而不是寻找 SVG 解决方案或其他任何东西除了
canvas之外。 -
如果您将需求分解为可视片段并适当定位它们会有所帮助吗?
-
好吧,既然该项目的目标之一是更好地进入 Javascript,尤其是 Canvas,我想离开画布作为一种技术是没有意义的 ;) 此外,实际上或多或少有些“花哨” /complex” 的事情正在发生,例如。使用插值贝塞尔曲线(-> 运动箭头)绘制寻路结果,如果没有动态绘图(画布、SVG 等),我将无法做到这一点。我当然可以使用隐藏的画布来获取缓冲上下文,事实上它确实可以工作,也很好,但我只是觉得“这不好,它不应该是必要的”。
标签: javascript html canvas