我有一个允许用户捕获多边形的函数。当选择 ESC 时,多边形关闭并显示一个表单,允许用户设置颜色、透明度等。在放置多边形后,我在监听器内禁用了监听器,但每次按 ESC 键时,我都会得到一个新的多边形。这是我的代码:
fabric.util.addListener(fabric.document, 'keyup', function (e) {
if (e.keyCode === 27) {
for (var i = 0; i < lineCounter; i++) {
mapCanvas.remove(lines[i]);
}
//polyPoints.push(new Point(polyPoints[0].x, polyPoints[0].y));
var poly = buildPoly(polyPoints);
console.log(poly.get('points'));
console.log(mapCanvas);
mapCanvas.add(poly);
mapCanvas.setActiveObject(poly);
openObjectPropertiesWindow(winReturn, propertiesOpen, previousSelectedObj, mapCanvas.getActiveObject());
previousSelectedObj = 'geometry';
//mapCanvas.renderAll();
mapCanvas.off('mouse:down');
mapCanvas.off('mouse:move');
mapCanvas.off('mouse:up');
poly = null;
fabric.util.removeListener(fabric.document, 'keyup', mapCanvas._keyup);
drawing = false;
}
});
我尝试了几种不同的变体。如何禁用 ESC 键的监听器?
最佳答案
fabric.util.removeListener(fabric.document, 'keyup', this.keyup);
更多信息请点击这里: https://github.com/kangax/fabric.js/wiki/Working-with-events
我认为您可能会出错的地方是尝试引用您的mapCanvas._keyup
。您正在扩展一个对象,因此请使用 this
。另外,我没有看到使用最新版本的 _keyup
方法。
关于fabricjs - 在 Fabric.js 中删除监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28204655/