Flash AS3阵列和排序

时间:2012-04-05 16:03:35

标签: actionscript-3 flash actionscript

我的问题是我有一个等距网格,只是基于X,Y值: 每次单击按钮例如道路时,此项目都会被推送到数组()

 //
 addChild(roadTiles);
 gameAssets.push(roadTiles);
 arrangeAssets();
 //

我的arrangeAssets方法只是检查数组"没有点发布,因为它在大多数时间都失败了。通常一些项目更新但不是全部。 所以我希望有人有一个解决方案来检查X,Y值然后是Array的setChildIndex。 我已经看了,继续被引用第三方as3引擎,我不感兴趣,因为我想自己做,并有更好的理解。

enter image description here

或者这是不可能的,因为我只使用X,Y网格

    arrangeAssets();{
var i:int = gameAssets.length;
while(i--){
    if (getChildIndex(sortedItems[i]) != i) {
        gameAssets.sortOn("y", Array.NUMERIC);
        setChildIndex(gameAssets[i], i);
    }
    }

我只将草网格顶部的项目添加到数组中。

1 个答案:

答案 0 :(得分:1)

假设最左边的点是x: 0, y:0,则瓷砖相互覆盖,从高x和低y到低x和高{{1}值。

我会添加一个y变量(按你喜欢的方式调用它),并从weight

计算它

这将使最顶角的值为0,最底部的值最高。每一行(对角线确实)都是一样的。

然后对(totalx - x) * y进行排序,并且您在相对z堆栈中有一个项目列表。

这并没有真正解决setchildIndex,因为那里不能有两个项目。黑客将删除所有并将其添加回订单中。 (你可以有一个临时孩子,你作为孩子添加,这样你就不必自动删除孩子了)

我发现此图片显示来自http://www.kirupa.com/developer/isometric/depth_sorting.htmweightweight

enter image description here enter image description here

_y是相同的,因为水平_y值是相同的