如何从fabricjs canvas中删除事件侦听器

dsd*_*dsd 5 jquery fabricjs

我正在使用fabricjs在html5中构建交互式地图.

当DOM加载时,我通过调用:*my_event_setter(true)*将我的鼠标悬停监听器添加到我的fabricjs画布实例.

然后为了测试,我想在我第一次鼠标悬停时通过调用:*my_event_setter(false)*删除监听器.因此,应该删除鼠标悬停监听器,但事实并非如此.

my_event_setter = function( toggle )
  { var lvo =  { 'object:over' : function(e){ mouseover_handler( e ) } } ;
    toggle ? my_fabric_canvas.on( lvo ) : my_fabric_canvas.off( lvo ) ;
  } 
mouseover_handler = function( e )
  { my_event_setter( false ) ;
  } 
Run Code Online (Sandbox Code Playgroud)

JDr*_*ake 7

此示例显示如何在触发 mouseup 时删除 mousemove:

canvas.on('mouse:up', function () {
    canvas.off('mouse:move', eventHandler);
});
Run Code Online (Sandbox Code Playgroud)


Jes*_*les 5

我通过使用以下方法解决了

var canvas = fabric.Canvas.activeInstance;
canvas.__eventListeners["mouse:down"] = [];
Run Code Online (Sandbox Code Playgroud)

事件在一个数组中,因此可以轻松处理这些事件.