Vue.js 选择下一个/上一个项目&;用面料js将其带到前面

Vue.js 选择下一个/上一个项目&;用面料js将其带到前面,vue.js,fabricjs,Vue.js,Fabricjs,假设画布上有10件物品。我需要实现next和previous按钮 单击“下一步”时,如果有活动对象,则应选择下一个对象并将其置于前面,以便用户可以轻松单击该项目并移动它 但是在fabricJs中,所有层都表示为对象数组。当我把对象放在前面时,它会改变它的索引。例如,我们有3项: 1 // currently selected 2 3 然后我将2个项目设置为活动,并将其带到前面。阵列现在变为: 2 // currently selected and brought to top 1 3 然后

假设画布上有10件物品。我需要实现
next
previous
按钮

单击“下一步”时,如果有活动对象,则应选择下一个对象并将其置于前面,以便用户可以轻松单击该项目并移动它

但是在fabricJs中,所有层都表示为对象数组。当我把对象放在前面时,它会改变它的索引。例如,我们有3项:

1 // currently selected
2 
3
然后我将2个项目设置为活动,并将其带到前面。阵列现在变为:

2 // currently selected and brought to top
1
3
然后,如果我选择下一项,它将是1,而不是3

下面是示例代码:

selectNextItem() {
  let activeObject = this.canvas.getActiveObject()

  if (!activeObject) {
    return false
  }

  let totalObjectsNumber = this.canvas.getObjects().length
  let currentIndex = this.canvas.getObjects().indexOf(activeObject)
  let nextIndex = null

  // We reached the last item, rewind to the beginning
  if (currentIndex === totalObjectsNumber - 1) {
    nextIndex = 0
  } else {
    nextIndex = currentIndex + 1
  }

  let object = this.canvas.item(nextIndex)
  this.canvas.setActiveObject(object)
  object.bringToFront() // <--- this causes problem

  this.canvas.renderAll()
}
selectNextItem(){
让activeObject=this.canvas.getActiveObject()
如果(!activeObject){
返回错误
}
让totalObjectsNumber=this.canvas.getObjects().length
让currentIndex=this.canvas.getObjects().indexOf(activeObject)
设nextIndex=null
//我们到了最后一项,倒带到开头
如果(currentIndex==totalObjectsNumber-1){
nextIndex=0
}否则{
nextIndex=currentIndex+1
}
让对象=this.canvas.item(nextIndex)
this.canvas.setActiveObject(对象)

object.bringToFront()//我尝试使用你的函数I它对我使用Fabricjs 2.3.3很好。你使用的是什么版本

var canvas=newfabric.canvas('c');
var rect=new fabric.rect({
左:100,,
前100名,
填写:“FF0000”,
笔画:“000”,
宽度:100,
身高:100,
冲程宽度:10
});
var rect2=new fabric.Rect({
左:150,
排名:150,
填充:“FF0FF0”,
笔画:“AABBCC”,
宽度:100,
身高:100,
冲程宽度:10
}); 
var rect3=new fabric.Rect({
左:75,
排名:75,
填写:“CCCFF0”,
笔画:“DDBBFF”,
宽度:100,
身高:100,
冲程宽度:10
});
canvas.add(rect、rect2、rect3);
log(canvas.getObjects());
setInterval(函数(){
选择nextitem();
},1500);
函数selectNextItem(){
console.log('选择下一项');
让activeObject=canvas.getActiveObject()
如果(!activeObject){
返回错误
}
让totalObjectsNumber=canvas.getObjects().length
让currentIndex=canvas.getObjects().indexOf(activeObject)
设nextIndex=null
//我们到了最后一项,倒带到开头
如果(currentIndex==totalObjectsNumber-1){
nextIndex=0
}否则{
nextIndex=currentIndex+1
}
让对象=canvas.item(nextIndex)
canvas.setActiveObject(对象)
object.bringToFront()//