【发布时间】:2015-02-15 21:04:23
【问题描述】:
我目前正在做类似的事情:
- 创建一个画布并将其附加到分隔符
- 在该画布上通过 CSS 设置背景图像。
- 在画布上绘制一个六边形网格
- 在画布上绘制 PNG。
- 为这些 PNG 设置动画以显示“运动”。
但是,必须重新绘制包括不动的 PNG 在内的整个画布是一件很痛苦的事情。
我想知道为背景/hexgrid 使用单个画布并在附加的小画布元素上创建 PNG 是否更智能或更好,然后在背景画布的顶部进行 zIndex。然后我可以使动画(PNG 移动)更容易。
但是,在将“新”画布实际放置在背景画布的正确 x/y 坐标上时,我遇到了问题。
this.drawShipImage = function(name, id, x, y){
var div = document.getElementById("grid");
// initial, big canvas with background is created elsewhere but has the same width/height than "grid"
var canvas = document.createElement("canvas");
canvas.id = name + id;
canvas.width = 30;
canvas.height = 30;
canvas.style.position = "absolute";
canvas.style.zIndex = 1;
var context = canvas.getContext("2d");
context.scale(0.75, 0.75);
context.drawImage(ship, 0, 0);
div.appendChild(canvas);
}
基本上,这个函数有 2 个重要的参数,即 x/y 参数,新画布应该在上下文中绘制到背景画布的宽度/高度。 但是我无法得出让图像出现在正确坐标处的方法。
我想它可以工作的唯一方法是添加 canvas.style.margin = x/y-ish 混在一起?
【问题讨论】:
-
为什么不只使用 2 个画布?一个用于背景,另一个用于 PNG...顺便说一句,您没有使用
top和left属性来定位多个画布? -
你能解释一下顶部/左侧属性,如果我只使用 2 个画布,它们将如何帮助我的事业?
-
当您尝试将每个画布放在背景画布上时,它们不会帮助 2 个画布,而是多个(小)画布。
-
使用单个画布...使用画布元素的最大优点是避免不必要的 DOM ...无论如何您都必须重新绘制它,它会给您带来更好的性能
标签: javascript css html canvas