繁体   English   中英

如何以编程方式触发 fabric.js “object:modified” 事件?

[英]How to trigger fabric.js “object:modified” event programmatically?

我想以编程方式触发 'object:modified' 事件。 我已经尝试过“火”和“触发”方法。

var canvas = new fabric.Canvas('c');

canvas.on("object:modified", function (e) {
    alert("object modified");
});

var text = new fabric.Text('Text', {
  fontFamily: 'Hoefler Text',
  left: 10,
  top: 10
});

canvas.add(text);

$('.fillText').click(function(){
  text.setFill($(this).data('color'));
  canvas.renderAll();

  text.trigger('modified');
});

$('#moveText').click(function(){
  text.setLeft(50);
  text.setTop(50);
  text.setCoords();
  canvas.renderAll();

  text.trigger('modified');
});

https://jsfiddle.net/gb4u85q4/

您可以使用canvas.trigger('<eventname>', options);触发事件canvas.trigger('<eventname>', options); . fire已被弃用,因此您可能应该避免使用它。

由于您想触发object:modified ,您可以通过以下方式执行此操作,同时传递已修改的对象:

canvas.trigger('object:modified', {target: text});

我使用添加到其中的解决方案更新了您的JSFiddle :)(注意我把alert改成了console.log因为我觉得alerts很烦人,你可以在开发者工具中查看console.log的输出,比如谷歌浏览器可以按F12打开)

版本 4 重大更改

同时你应该使用fire

canvas.fire('object:modified');

在 observabile mixin observestopObservingtrigger被删除。 继续使用onofffire 那些更短,而且我们所有的文档都引用了这种名称。

有关更多详细信息,请参阅第 4 版重大更改

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM