如何在fabric js中为setBackgroundImage函数编写回调函数

时间:2016-06-22 11:32:48

标签: javascript canvas fabricjs

我已成功完成在布料画布中设置背景图像 我的代码

 canvas.setBackgroundImage(imageSource, canvas.renderAll.bind(canvas), { 
                     // Fixed  object misplacing issue.
                     top: obj.top, // object top
                     left: obj.left, // object left
                     width: obj.width * obj.scaleX,
                     height: obj.height * obj.scaleY,
                     name:'back-img',
                     //angle:angles,
                     srno:"", // removed serial number of background image. becouse serial number is undefined
                     }); 

现在我面临的问题是将角度设置为背景图像

canvas.backgroundImage.setAngle(angle) 


上面的单行代码无效,因为它在完成canvas.setBackgroundImage之前执行了。
在我的理解canvas.setBackgroundImage()是同步函数,所以我想写回调到canvas.setBackgroundImage()

注意:-i不想在canvas.setBackgroundImage()内定义角度属性,因为我的图像位置错位。

任何帮助或建议表示赞赏 谢谢你的时间

1 个答案:

答案 0 :(得分:0)

以下对我有用(在CB中的renderAll之后不需要“.bind”):

function setBackgroundImageCB(angle, canvas) {
   canvas.backgroundImage.setAngle(angle);
   canvas.renderAll(canvas);
}

这里需要“.bind”

canvas.setBackgroundImage(imageSource, setBackgroundImageCB.bind(this, angle,canvas), { 
                 // Fixed  object misplacing issue.
                 top: obj.top, // object top
                 left: obj.left, // object left
                 width: obj.width * obj.scaleX,
                 height: obj.height * obj.scaleY,
                 name:'back-img',
                 //angle:angles,
                 srno:"", // removed serial number of background image. because serial number is undefined
                 }); 

是的,setBackgroundImage函数中的第二个参数是回调,但没有“.bind”,它立即执行。它没有等待setBackgroundImage来执行它。