如何不指定可选参数?

时间:2017-11-16 01:51:48

标签: javascript html5-canvas

canvas上下文的img函数包含如下参数:

img,sx(可选),sy(可选),swidth(可选),sheight(可选),x,y

如您所见,img和x之间有可选参数。我如何指定我不想使用sx sy swidth或sheight并跳转到x?

2 个答案:

答案 0 :(得分:2)

如果您正在谈论CanvasRenderingContext2D.drawImage()方法,那么它实际上允许您传递这三个参数:

ctx.drawImage(img, x, y);

有关详细信息,请see MDN

答案 1 :(得分:0)

ctx.drawImage不能跳过参数!!

您不能跳过此函数的任何可选参数。

您必须传递3个,5个或9个参数。

如果您为第一个参数添加除nullundefinedfalsetrue等数字之类的值,则该值将被强制转换为一个数字。

如果您传递除了有效图像之外的任何内容作为第一个参数,则调用将引发错误。

投掷与否的例子。



const c = document.createElement("canvas");
const ctx = c.getContext("2d");

function test(func, message) {
  try {
    func();
    console.log(message)
  } catch (e) {
    console.log(message + e.message)
  }
}

test(() => ctx.drawImage(c, 0, 0), "drawImage(img,x,y) OK");
test(() => ctx.drawImage(c, 0, 0, 10, 10), "drawImage(img, x, y, w, h) OK");
test(() => ctx.drawImage(c, 0, 0, 10, 10, 0, 0, 10, 10), "drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh) OK");
test(() => ctx.drawImage(c, null, 0), "drawImage(c,null,0)  OK null is converted to 0");
test(() => ctx.drawImage(c, undefined, 0), "drawImage(c,undefined,0) OK undefined is converted to 0");
test(() => ctx.drawImage(c, 0), "drawImage(c,0) Error:");
test(() => ctx.drawImage(c, 0, 0, 10), "drawImage(c,0,0,10) Error:");
test(() => ctx.drawImage(c, 0, 0, 10, 10, 0, 0), "drawImage(c,0,0,10,10,0,0) Error:");
test(() => ctx.drawImage(null, 0, 0), "drawImage(null,0,0) Error:");




相关问题