Fabric.js renderAll方法的回调函数?

时间:2015-06-16 19:43:26

标签: fabricjs

我使用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方法上增加一个计数器,然后检查计数器是否= =对象的数量,如果是,则调用保存功能。这对我来说似乎相当复杂。

(作为更多背景,如果还有其他方法可以实现我需要的东西,我需要保存画布图像,但首先需要取消选择所有对象,这样图像就不会随着手柄的显示而保存。)

2 个答案:

答案 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会帮助你。