我的问题是我有一个等距网格,只是基于X,Y值: 每次单击按钮例如道路时,此项目都会被推送到数组()
//
addChild(roadTiles);
gameAssets.push(roadTiles);
arrangeAssets();
//
我的arrangeAssets方法只是检查数组"没有点发布,因为它在大多数时间都失败了。通常一些项目更新但不是全部。 所以我希望有人有一个解决方案来检查X,Y值然后是Array的setChildIndex。 我已经看了,继续被引用第三方as3引擎,我不感兴趣,因为我想自己做,并有更好的理解。
或者这是不可能的,因为我只使用X,Y网格
arrangeAssets();{
var i:int = gameAssets.length;
while(i--){
if (getChildIndex(sortedItems[i]) != i) {
gameAssets.sortOn("y", Array.NUMERIC);
setChildIndex(gameAssets[i], i);
}
}
我只将草网格顶部的项目添加到数组中。
答案 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.htm的weight
为weight
_y是相同的,因为水平_y
值是相同的