2012-02-22 51 views
0

可能重複:
flash as3 - how do I find an object's index in an array找對象的索引在數組中的Flash AS3

我有相似的對象的數組:

[ 
    { 
     start : 0.000, 
     end : 0.100 
    }, 
    { 
     start : 0.100, 
     end : 0.200 
    }, 
    { 
     start : 0.200, 
     end : 0.300 
    } 
] 

是有一個快速的方法可以讓我在一幀之後查詢這個對象幀來找出一個值(在這種情況下是一個音頻播放器的當前時間k)謊言?

跟同事聊天后,他們都建議我列舉這一個大數組索引值與哪個指標與其相關的引用,例如

[000] = 0 
[001] = 0 
... 
[100] = 1 
... 
[200] = 2 

回答

2

索引策略將是最快的,但是你不需要做更多這樣的?:

["0.000"] = {}; 
["0.100"] = {}; 

或者可以遍歷並選擇你的第一個例子中所涉及的對象,假設沒有超過1000個說中的對象數組它應該速度足夠快:

function find(start:Number):int 
{ 
    for each(var i:Object in yourArray) 
    { 
     if(i.start == start) return yourArray.indexOf(i); 
    } 
} 

這應與指定的開始時間返回一個對象的索引:

trace(find(0.1)); // 1 
+0

爲了保持內存使用率更低,我只會枚舉一個索引ID,然後查看實際配置對象的相關信息。我想我只需要嘗試兩種選擇,並執行一些速度更快的基準測試。 – 2012-02-22 17:44:48

0

也許一個更好的解決辦法是使用Dictionary(link)

詞典是快速簡單的方法來存儲關聯數據。

雖然我不完全確定你想解決什麼問題,所以其他數據類型可能更適合你。我只是讓你知道你可以使用的另一個選項。

+0

這看起來很有趣,但我不確定它是否會比列舉數組更快。也許我只是沒有正確理解它。 – 2012-02-22 17:44:35

相關問題