fabric.js根据左上角的位置循环对象

时间:2014-11-14 12:44:24

标签: javascript fabricjs

嗨我有一个画布,放置了多个图像,我想从左上角的位置循环播放图像,并一直向下。

  Lets say i have 10 images placed on canvas 
    [1] [2] [3] [4] [5]
    [6] [7] [8] [9] [10]

  I have changed position of some of the images 
    [9] [5] [3] [4] [2]
    [6] [7] [8] [10] [1]
  i want to loop in the similar order based on position from top left 

抱歉,我无法创建/显示示例

现在,如果我可能是正确的,fabric.js中的foreach会根据添加的对象并基于z-index来考虑。

有没有办法可以根据左上角的位置循环对象。

任何帮助都会很棒。

1 个答案:

答案 0 :(得分:1)

最直接的表面技术将涉及大量使用fabric.ObjectintersectsWithRect方法。它需要两个点作为构成正方形的参数。

在画布上的所有对象上使用此方法,您可以看到哪些与此正方形相交。

我的建议是将整个画布分成这些正方形的网格,并从左上方的方块开始循环到每个方格,然后向下到右下方。你肯定需要使用两个for循环来测试每个方块。

测试每个方块时,如果您看到画布上的某个对象与该方块相交,请将其添加到结果数组中。

最终,当你到达网格的末尾时,你的阵列就会完整!

您可能遇到的问题是每个方块的大小。方块越小,列表越精确,但完成所有过程的速度就越慢。

正方形越大,它的准确度就越低,但环路的完成速度会快得多。

我之所以提到准确性只是因为你能够在画布上堆叠对象,而这种技术只会告诉你一个物体是否与这两个点所创造的区域相交。它没有告诉你他们在'单元格内的顺序。画布网格。

希望这有帮助!