Fabricjs将对象移动到图层

时间:2016-09-25 00:58:14

标签: fabricjs

我正在尝试将项目移动到不同的层(所以我可以订购它们)

for (var x = 0; x < resp.Items.length; x++) {
    $('#inv' + resp.Items[x].Type).attr('src', '/public/items/universe/' + resp.Items[x].Type + '/' + resp.Items[x].Name + '.png');
    fabric.Image.fromURL('/public/items/universe/' + resp.Items[x].Type + '/' + resp.Items[x].Name + '.png', function(obj) {
        inventory.add(obj);
        obj.moveTo(obj.priority)
        obj.selectable = false;
        inventory.renderAll();
        console.log(inventory.getObjects().indexOf(obj), obj.priority)
    }, {
        id: resp.Items[x].Name,
        creator: resp.Items[x].Creator.Username,
        priority: resp.Items[x].Priority,
        category: resp.Items[x].Type
    });
}

我正在尝试使用moveTo方法,但根本没有成功。 console.log调用始终显示0,1,2,3 ......而不是moveTo索引

我没有错误,并且item.priority存在,所以......我想错了一些东西

1 个答案:

答案 0 :(得分:2)

moveTo()仅重新排列数组中的对象。您不应该将它们视为可以具有与数组中的对象一样多的Id的层。因此,除非有11个对象,否则您无法将某些内容移动到10的索引。

更好的选择可能是首先加载所有对象并根据优先级对它们进行排序,然后根据该顺序将它们添加到画布。