fabricjs - 在 Fabric.js 中删除监听器

标签 fabricjs

我有一个允许用户捕获多边形的函数。当选择 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/

相关文章:

reactjs - Canvas 库如何适应 Flux 模式和 React?

fabricjs - 在fabric.js中绘制两个箭头

javascript - FabricJS - 能够输出(到 PNG)一小部分 Canvas ,而不是整个 Canvas

fabricjs - 有没有办法只从 Canvas 上裁剪设计并忽略所有白色/透明空间?

javascript - ('object:selected' 上的 FabricJS)不会连续触发行

fabricjs - 使用 Fabric.js 以编程方式创建和选择组

javascript - 在 Canvas 中使用 ctx.scale() 方法时,调整大小和旋转在 fabricjs 中不起作用?

javascript - MATH 恢复旋转坐标

javascript - 如何以编程方式触发fabric.js "object:modified"事件?

javascript - 使用 Fabric.js 在 Canvas 上绘制线条动画