我使用Fabric.js并且需要在renderAll完全完成后调用一个函数。这似乎是简单的功能,但我的搜索,文档阅读等已经空洞。如果有人有解决方案,我会非常感激。
canvas.deactivateAll().renderAll();
// I need a save function called here, after the above has completed
我尝试绑定到画布的after:render方法,但是每个对象都调用它,而不是所有对象。
canvas.on('after:render', function() {
// call the save function here
});
我想我能做的是计算画布对象的数量,然后在after:render方法上增加一个计数器,然后检查计数器是否= =对象的数量,如果是,则调用保存功能。这对我来说似乎相当复杂。
(作为更多背景,如果还有其他方法可以实现我需要的东西,我需要保存画布图像,但首先需要取消选择所有对象,这样图像就不会随着手柄的显示而保存。)
答案 0 :(得分:1)
我找到了一个使用deactivateAllWithDispatch方法的解决方案,它触发了选择:清除了侦听器事件。在那个事件函数中,我正在执行deactivateCallback方法(如果已设置)。
canvas.on('selection:cleared', function() {
if (deactivateCallback) {
executeCallbackFunction(renderCallback, window);
deactivateCallback = null;
}
});
deactivateCallback = callback;
canvas.deactivateAllWithDispatch();
(注意:上面代码中的executeCallbackFunction与答案没有直接关系,只是执行一个以字符串形式传入的函数)
答案 1 :(得分:0)
所以你需要的是停用所有元素。我不知道为什么canvas.deactivateAll()
不行。这jsFiddle会帮助你。