數組我試圖預先整理項目的數組使用以下添加到一個數組:預分類在AS3
draw(texture:LTexture, position:Point, depth:int = 0):void
目前,調用此增加紋理到隊列中。一旦我的隊列中的項目是準備渲染,我用下面的排序我的數組:
queue.sortOn("depth");
這工作得很好,但它的速度慢,尤其是當我的隊列中有超過2000紋理繪製。
我試圖通過在draw()
中添加一些新的邏輯來預設我的數組。基本上我的隊列現在是一個2D數組,其中第一個圖層表示深度,其中的每個數組都包含要繪製的紋理。例如:
queue[1] = [texture, texture];
queue[4] = [texture];
queue[2] = [texture, texture, texture, texture];
我再有,結合這些數組到一個新的隊列功能:
function collate():Array
{
var collated:Array = [];
for each(var i:Array in _block)
collated = collated.concat(i);
return collated;
}
這似乎是工作正常,但也有一些問題至今:
- 當我使用深度變化很大時,例如
5
和17
,foreach循環似乎在串聯順序爲準它們創建,而不是它們的索引我內心的數組(奇怪 - 如果我用深處更加接近正常工作)。 - 如果指定了深度非常高和/或極大地改變,我的隊列結束有空閒時隙的一噸,我的foreach循環將具有串聯我的陣列,例如,當在迭代的過程中包括:
,,,,,,,,,,,texture2,texture3,,,,,,texture0,texture1,,,,,texture4
我該如何更好地處理我想要實現的目標?那是,我想結束一個數組包含我的所有紋理按深度排序。
考慮使用載體,以及向量。他們搖滾! – ToddBFisher 2012-01-30 06:38:11
@ToddBFisher我在多個地方讀過'Vector'只有在使用'int','uint','Number'和我認爲'String'時纔會產生好處。 – Marty 2012-01-30 06:40:58
我只對字符串和數字的向量做過測試,所以可能是這種情況。我理解它的方式是,因爲vector只存儲一個數據類型,所以它通常允許它們比數組訪問更快。我至少會試一試。如果你做測試向量,讓我知道,因爲我會對你的對象的速度差異與數組的結果感興趣。 – ToddBFisher 2012-01-30 06:46:32