Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript fabric.js基于左上角的位置循环对象_Javascript_Fabricjs - Fatal编程技术网

Javascript fabric.js基于左上角的位置循环对象

Javascript fabric.js基于左上角的位置循环对象,javascript,fabricjs,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

嗨,我有一个画布上放置了多个图像,我想从左上角的位置和所有的方式通过图像循环

  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,如果我可能是正确的话

是否有任何方法可以基于左上角的位置在对象之间循环


任何帮助都将是巨大的。

最直截了当的技术将涉及大量使用
fabric.Object
类的
intersectsWithRect
方法。它以两个点作为构成正方形的参数

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

我的建议是将整个画布分割成一个由这些正方形组成的网格,然后从左上角的正方形开始循环到右下角的正方形。您肯定需要使用类似于两个for循环的东西来测试每个正方形

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

最终,当您到达网格的末尾时,您的阵列将完成

你可能遇到的问题是每个正方形有多大。正方形越小,你的列表就越准确,但完成这一切的过程就越慢

正方形越大,其精度可能越低,但循环完成得更快

我之所以提到精确性,是因为你有能力在画布上堆叠对象,而这项技术只会告诉你一个对象是否与两点所创建的区域相交。它不会告诉您它们在画布网格的“单元格”中的顺序

希望这有帮助