我有一个像这样的帆布广场:draw.fillRect(sq);
在此之前:sq = "400, 400, 0, 0";
。控制台说
" CanvasRenderingContext2D.fillRect没有足够的参数。"。
我认为这是因为它将sq
视为一个参数。有什么方法可以避免这种情况吗?要将所有四个参数存储在一个变量中吗?
提前致谢。
答案 0 :(得分:0)
你是对的,你的sq
是一个字符串,因为它被视为单个变量。而是尝试使用像:
var sq = [400, 400, 0, 0];
然后
draw.fillRect.apply(draw, sq);
apply
使用sq
中提供的参数调用您的函数。为了更进一步的
信息请查看MDN的Documentation for Function.prototype.apply。
注意:您正尝试使用x = y = 400
在width = 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'解决方案相比,使用对象文字将使您的代码更具可读性,因此调试会更简单。