【发布时间】:2016-12-14 10:09:35
【问题描述】:
有一个问题。作为一个菜鸟,我找到了一个不错的脚本并重写了它,让我很满意。但我想知道我是否可以使以下内存/性能效率更高。
首先介绍一下背景。
- 我制作了一个画布,用鼠标输入在上面画了一条线。非常基本。
- 使用“canvas2svg”,我能够将画布复制到 svg 输出/下载。
问题:
现在,一切正常。但我想知道是否可以使以下代码更有效地提高内存/性能。
“ctx”变量在画布上绘制 “rttSvg” var 绘制到 svg 文件。
points.push({ x: e.clientX, y: e.clientY });
ctx.beginPath();
ctx.moveTo(points[points.length - 2].x, points[points.length - 2].y);
ctx.lineTo(points[points.length - 1].x, points[points.length - 1].y);
ctx.stroke();
rttSvg.beginPath();
rttSvg.moveTo(points[points.length - 2].x, points[points.length - 2].y);
rttSvg.lineTo(points[points.length - 1].x, points[points.length - 1].y);
rttSvg.stroke();
我可以把这个结合起来吗?像这样的东西? (菜鸟提前警告:)
(ctx.rttSvg).beginPath();
想法 对于这样的一小部分,我当然可以创建一个函数,传递两个变量并执行。但是我必须创建很多很多函数,因为我必须为所有与画布和 svg 交互的代码执行此操作。我想内联。
如您所见,我仍然需要围绕 JS 的思考过程。 :)
【问题讨论】:
-
不,如果不包装每个绘图操作以便两者兼而有之,简化它是不切实际的
-
我不同意。如果这两个绘图操作完全相同,那么您可以简单地拥有一个函数,该函数将上下文作为参数,然后在该上下文上绘图。调用函数两次...
function drawStuff(context) {}和...drawStuff(ctx);drawStuff(rttSvg); -
@Archer,是的。这确实有效:) points.push({ x: e.clientX, y: e.clientY }); drawStuff(ctx,点); drawStuff(rttSvg,点);和函数 drawStuff(context,points) { }
-
您可以更进一步,不要传递
points,因为只要函数在同一范围内,它就可用。我添加了一个带有示例的答案。
标签: javascript html variables canvas svg