2016-09-25 3 views
1

Я пытаюсь перемещать элементы в другой слой (так что я могу заказать их)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 существует так ... Я что-то не хватает, я думаю,

ответ

2

moveTo() только переупорядочивает объекты в массиве. Вы не должны думать о них как о слоях, которые могут иметь любой Id, а также объекты в массиве. Таким образом, вы не можете переместить что-то в индекс 10, если не существует 11 объектов.

Лучшим вариантом может быть загрузка всех объектов сначала и сортировка их на основе приоритета, а затем добавление их в холст на основе этого заказа.

Смежные вопросы