I basically want to convert this input:
var tiles:Array = new Array();
tiles[0] = [1, 1, 1, 1, 0, 0, 0, 0, 0, 0];
tiles[1] = [1, 1, 1, 1, 0, 1, 1, 1, 0, 0];
tiles[2] = [0, 0, 0, 0, 0, 1, 0, 0, 0, 0];
tiles[3] = [0, 0, 0, 0, 0, 1, 0, 0, 0, 0];
tiles[4] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
tiles[5] = [0, 0, 1, 0, 0, 0, 0, 0, 0, 0];
tiles[6] = [0, 0, 0, 0, 0, 1, 1, 1, 1, 1];
tiles[7] = [0, 0, 0, 0, 0, 1, 1, 1, 1, 1];
tiles[8] = [0, 0, 0, 0, 0, 1, 1, 1, 1, 1];
tiles[9] = [0, 0, 0, 0, 0, 1, 1, 1, 1, 1];
对于这个输出(一组矩形向量):
[
(x=0, y=0, w=4, h=2),
(x=5, y=1, w=3, h=1),
(x=5, y=2, w=1, h=2),
(x=2, y=5, w=1, h=1),
(x=5, y=6, w=5, h=4)
]
此外,它不能是重叠的矩形,并且可以以任何布局进行排列,而不仅仅是我给出的布局。
我一直在寻找AS3或算法的代码示例,但它们总是用其他编程语言编写或者太难实现了,所以我希望在这里能找到已经遇到过同样问题的人。
编辑:正如@Marty建议的那样,另一个答案可能是反过来工作,提供矩形并获得数组作为输出,我将尝试让它起作用并将其作为答案放入(如果没有人首先让它起作用),但我希望它可以用第一种方式完成。
tiles[0][1]
设置为0
- 有多个矩形布局可供选择),这可能变得非常复杂。 - Marty