FabricJS中如何为fabric.controlsUtils的actionHandler设置多个函数?
在FabricJS中为Control配置多个actionHandler的正确方式
你原来的写法无法生效,是因为箭头函数里用逗号分隔两个函数的写法完全错误——逗号运算符只会返回最后一个函数的引用,但既没有调用函数,也没传递FabricJS actionHandler要求的必要参数,自然起不到执行两个处理逻辑的作用。
正确的做法是自定义一个组合处理函数,在这个函数内部按顺序调用你的两个目标处理函数,并把actionHandler所需的参数(eventData、transform、x、y)传递给它们。
代码示例
objectControls.br = new fabric.Control({ x: 0.5, y: 0.5, cursorStyleHandler: scaleStyleHandler, actionHandler: (eventData, transform, x, y) => { // 按顺序调用两个处理函数,传递必要参数 widthchangeobjscale(eventData, transform, x, y); scalingEqually(eventData, transform, x, y); } });
注意事项
如果你的两个处理函数有返回值,需要留意:FabricJS的actionHandler返回true时会阻止默认缩放行为。如果希望两个逻辑都执行,直接按顺序调用即可;如果需要根据返回值控制流程,可以自行添加判断逻辑。
内容的提问来源于stack exchange,提问作者dhananjezhian
相关产品推荐
相关产品推荐

