Js canvas fillRect()坐标作为变量不起作用

时间:2016-04-20 08:28:23

标签: javascript canvas

我有一个像这样的帆布广场:draw.fillRect(sq); 在此之前:sq = "400, 400, 0, 0";。控制台说

" CanvasRenderingContext2D.fillRect没有足够的参数。"。

我认为这是因为它将sq视为一个参数。有什么方法可以避免这种情况吗?要将所有四个参数存储在一个变量中吗?

提前致谢。

2 个答案:

答案 0 :(得分:0)

你是对的,你的sq是一个字符串,因为它被视为单个变量。而是尝试使用像:

这样的数组
var sq = [400, 400, 0, 0];

然后

draw.fillRect.apply(draw, sq);

apply使用sq中提供的参数调用您的函数。为了更进一步的 信息请查看MDN的Documentation for Function.prototype.apply

注意:您正尝试使用x = y = 400width = heigth = 0处绘制一个矩形。所以你不会看到矩形的大小为0.所以你可能想要改变你的参数。看一下documentation of the .fillRect()方法。

答案 1 :(得分:0)

你的假设是对的,“fillRect”需要4个参数。

这里提出了如何将它们保存在一个变量中的建议:

Var rectData = {
"x": 400,
"y": 400,
"width": 0,
"height": 0
};

而不是像那样使用它:

draw.fillRect(rectData.x,rectData.y, rectData.width, rectData.height);

顺便说一下:使用0的宽度/高度可能不是你想要的。你不会看到任何矩形:)最好先测试你的代码片段,例如在里面 why ... (three points) in catch block is exist?

与'apply'解决方案相比,使用对象文字将使您的代码更具可读性,因此调试会更简单。