如何在Fabric.js子类中定义事件处理程序?

M.佩奇

Rect在Fabric.js中有以下子类它将图像添加到Rect。

var IRect = fabric.util.createClass(fabric.Rect, {
    type: 'iRect',
    initialize: function(options) {
        options || (options = { });
        this.callSuper('initialize', options);
    },

    fromObject: function (object, callback) {
        return new IRect(object);
    },

    toObject: function() {
        return fabric.util.object.extend(this.callSuper('toObject'), {});
    },

    _render: function(ctx) {
        this.callSuper('_render', ctx);
        var c = document.getElementById('canvas');
        var img = document.getElementById('info');
        c.getContext('2d').drawImage(img, -this.width/2, -this.height/2);

    }
});

我想为定义特定的事件处理程序IRect例如,当用户点击时IRect,我想要alert('hello')我的子类应该在哪里做?定义子类时如何获得对画布的引用?

可以在以下位置找到代码和问题描述:http : //jsfiddle.net/czcsj2fw/5/

用户名

我遇到了同样的问题,并且找到了解决方法。我不确定它的正确方法(我对fabricjs还是很陌生!),但它似乎确实有效,至少在平凡的情况下如此。基本上,画布不是在初始化中定义的,而是在_render中定义的,因此,如果在其中设置事件处理代码,它应该可以工作:)。

看起来像这样:

_render: function(ctx) {
    this.callSuper('_render', ctx);
    // custom rendering code goes here ...

    this.canvas.on('mouse:down', function(e) {
        console.log('mouse down ' + e);
    });
}

我更新了您的jsfiddle进行演示,它将鼠标单击(mouse:down事件)记录到控制台(一键触发了多个事件,因此警报非常烦人-可以使用cancelbubble或其他方式阻止它,但保持它为简单的避风港不必为该示例而烦恼)-http://jsfiddle.net/czcsj2fw/6/

HTH!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Hyperledger Fabric中监听事件(提交事件)?

如何在Blazor中编写自定义值更改事件处理程序?

如何在事件处理程序中获取事件名称

如何在Fabric中创建自定义帮助菜单?

如何在Fabric js中的组中添加图像

如何在Fabric.js中绘制弧

如何在Vue中设置Fabric.js?

如何在Fabric JS的SetBackgroundImage中设置跨域

如何在Fabric js中覆盖canvas.add()方法

如何在fabric js中删除组对象外的文本?

如何在Fabric JS中围绕中心旋转动画

如何在Itext Fabric JS中删除默认文本

Vis.js:如何在事件处理程序中访问网络?

如何在React-js中为捕获阶段注册事件处理程序?

如何在fabric.js中触发鼠标事件以模拟鼠标动作?

我如何在我的fabric.js画布中引入基于键的事件?

如何将自定义事件处理程序从vue-touch-events绑定到Vue.js中的自定义组件

如何在React中的const中添加事件处理程序?

如何在Telerik MVC ClientTemplate中绑定事件处理程序?

如何在jQuery插件中绑定此事件处理程序?

如何在事件处理程序中设置 AnsiString 参数?

如何在 jquery 中动态创建事件处理程序

如何在PowerShell中添加事件动作处理程序

如何在Submit事件处理程序中获取表单值?

如何在Elm的body元素中添加事件处理程序?

如何在OnWindowRendred事件处理程序中关闭窗口?

如何在Angular 2事件处理程序中访问“ this”?

如何在代码中为DataTemplate分配事件处理程序?

如何在React中传递事件处理程序作为道具?