Fabric.js:仅使用一个变量创建多个对象有什么问题吗?

时间:2016-01-06 04:53:21

标签: javascript object fabricjs

  • 为什么我对此有疑问?

因为从我的代码中,我希望用户创建无限的图像,因此必须以更短的方式创建它们,就像使用一个变量一样。

这是我在用户添加图片时调用的函数的代码:

(已编辑:此代码现已修复。)

function addImage(){
    var imageAdded = new Image();
    imageAdded.onload = function (img) {
    var imgAdded = new fabric.Image(imageAdded, {
        clipName: picID,
        clipTo: function (ctx) {
            return _.bind(clipByName, imgAdded)(ctx)
        }
    });
    canvas.add(imgAdded);
    };
    var n = 0;
    if(n == 0){
        n = 1;
        addEventListenerFabric();
    }
}
function addEventListenerFabric(){
    canvas.on("object:selected", function (e) {
        alert(e.target.clipName + " is selected"); // fixed
        canvas.renderAll();
    });
}
  • 我的代码中有什么问题?

我的代码会根据图像数量发出警报。例如,如果用户创建3个图像,则在选择图像时将发出3次警报。 是因为使用了一个变量吗?(也许我的代码完全错了,请重新检查)

  • 如果无法为所有人使用一个变量,或者您有更好的解决方案。 我很有兴趣看到你的意见。

谢谢你的建议!

1 个答案:

答案 0 :(得分:1)

这是因为您在每个图像加载时将object:selected绑定到画布。只需将其从onload函数移出,它只会触发一次。