我正在構建一款遊戲,我需要頂級處理器很多聲音效果。我創建了一個對象池,以便能夠重用它們的效果。我的問題是我應該如何編寫一個漂亮的游泳池解決方案,而不必爲每種聲音類型創建一個池。池的結帳功能返回列表中的第一個聲音。聲音效果的AS3對象池
這個有點骯髒的解決方案檢查我們借用從池中的項目是否有我想要創建的相同聲音。如果它是相同的聲音,我不會再創造聲音。如果不是這樣,即使我知道游泳池中存在正確聲音的實例,我也會創建它。
var item : ISoundItem = _soundPool.checkOut();
if(item.name != name)
item.create(name, _soundFactory.create(name), config);
這骯髒的解決方案減少了我的情況下,以約七實例被數百名,但我想我可以更加優化。
我一直在考慮將聲音名稱傳遞給結帳功能,但真的值得每次循環訪問池嗎?
任何想法?
效果經常播放,這意味着游泳池將有重複。 – Mattias
@Mattias嗯。我可能會發現一些黑客,但如實地說,可能有一個特定的數據結構可以滿足您的需求。不過,就我而言,我會推薦一個特定項目的數組字典或一個鏈接列表字典。 –
嗯。畢竟,這可能是最好的方法。我會嘗試使用包含Vectors的字典。謝謝。 – Mattias