2012-04-05 25 views
0

我的問題是我有一個等距網格,只是基於X,Y值: 每次點擊比如路比這個項目的按鈕時推到一個數組()的Flash AS3數組和排序

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

我的arrangeAssets方法只是檢查數組「因爲它大部分時間都失敗了。通常一些項更新但不是全部。 所以我希望有人有解決方案來檢查X,Y值然後檢查Array的setChildIndex。 我已經看了,繼續得到第三方as3引擎,我不感興趣,因爲我想讓我自己,並有更好的理解。

enter image description here

,或者這是不可能的,因爲IM只有使用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

我想你會需要採取另一種刺在解釋你在找什麼做的。首先發布當前的'arrangeAssets'代碼,並舉例說明一個新的roatTiles實例,您希望將其推送到gameAssets以及如何處理它。 – sberry 2012-04-05 16:10:39

+0

只是更新了信息。 – joshua 2012-04-05 16:26:55

+0

我仍然很難理解,你能指定你想要做什麼和它正在做什麼?或者這不是一個排序相關的問題? – Daniel 2012-04-05 16:30:14

回答

1

假設最左邊的點是x: 0, y:0的瓦片覆蓋彼此從高x和低y要低x和高y值。

我想補充一個weight變量(叫什麼你喜歡什麼),並從(totalx - x) * y

此計算,將有最上面的一角有一個0值,底部最有最高值。每一行(對角線)都是一樣的。

然後在weight上排序,並且您有一個相對z堆棧中的項目列表。

這並不真正解決setchildIndex問題,因爲你不能在那裏有兩個項目。黑客將刪除所有並將其添加回訂單。 (你可以有一個臨時的孩子,你加爲孩子,這樣你就不必去除孩子,因爲它是自動完成的)

,我發現這個圖像顯示了weight_yhttp://www.kirupa.com/developer/isometric/depth_sorting.htm

enter image description hereenter image description here

的_y是相同的,因爲(totalx - x) * y值水平是相同的

+0

聽起來有趣,但它在我的頭,哈哈我會思考這個想法,現在感謝我不能讓我的頭圍繞體重值?它是從哪裏來的 – joshua 2012-04-05 16:54:05

+0

這是計算,想象網格爲鑽石,頂部是在最低的重量數的後面,底部是最高的正面。 – Daniel 2012-04-05 16:57:05

+0

neally得到它,對不起,我不是一個程序員 – joshua 2012-04-05 17:00:42