Javascript 动态调用画布函数
有没有办法使用apply()或类似的方法调用canvas函数,比如动态调用canvas方法或能够传递参数数组 我在寻找这种效果Javascript 动态调用画布函数,javascript,canvas,Javascript,Canvas,有没有办法使用apply()或类似的方法调用canvas函数,比如动态调用canvas方法或能够传递参数数组 我在寻找这种效果 context.fillRect.apply(this,args)如果我理解正确: var op = "fillRect"; var args = [ 10, 10, 180, 180 ]; ctx[op].apply(ctx, args); 示例:您的apply方法应该可以正常工作: function rectangle(){ ctx.fil
context.fillRect.apply(this,args)代码>如果我理解正确:
var op = "fillRect";
var args = [
10, 10, 180, 180
];
ctx[op].apply(ctx, args);
示例:您的apply
方法应该可以正常工作:
function rectangle(){
ctx.fillRect.apply(ctx,arguments);
}
当然,这会变得更加“动态”:
您可以使用相同的函数填充矩形、绘制圆形或绘制简单的直线:
// simple line
doSomethingWithCanvas(ctx,'lineTo',10, 100);
// circle
doSomethingWithCanvas(ctx,'arc',275, 275, 200, 0, Math.PI*2, true);
// fillRect
doSomethingWithCanvas(ctx,'fillRect,10, 10, 180, 180);
PS:通过提供画布上下文作为参数,您可以使用此函数在任何画布上绘制。我很好奇,为什么您不能直接调用它们?您可以,但正如我所说,我希望使用函数字符串或参数数组动态调用它们。这样我就不需要为类似的操作创建两个单独的函数。对,我的问题是将This
作为第一个参数传递给apply()
。事后看来,这是一个明显的错误,但再次感谢您的回答!别担心;当我尝试你的例子时,我只是在谷歌上搜索了Chrome抛出的错误,发现了另一个讨论这个问题的问题。
// simple line
doSomethingWithCanvas(ctx,'lineTo',10, 100);
// circle
doSomethingWithCanvas(ctx,'arc',275, 275, 200, 0, Math.PI*2, true);
// fillRect
doSomethingWithCanvas(ctx,'fillRect,10, 10, 180, 180);