我正在构建一款游戏,我需要顶级处理器很多声音效果。我创建了一个对象池,以便能够重用它们的效果。我的问题是我应该如何编写一个漂亮的游泳池解决方案,而不必为每种声音类型创建一个池。池的结帐功能返回列表中的第一个声音。声音效果的AS3对象池
这个有点肮脏的解决方案检查我们借用从池中的项目是否有我想要创建的相同声音。如果它是相同的声音,我不会再创造声音。如果不是这样,即使我知道游泳池中存在正确声音的实例,我也会创建它。
var item : ISoundItem = _soundPool.checkOut();
if(item.name != name)
item.create(name, _soundFactory.create(name), config);
这肮脏的解决方案减少了我的情况下,以约七实例被数百名,但我想我可以更加优化。
我一直在考虑将声音名称传递给结帐功能,但真的值得每次循环访问池吗?
任何想法?
效果经常播放,这意味着游泳池将有重复。 – Mattias
@Mattias嗯。我可能会发现一些黑客,但如实地说,可能有一个特定的数据结构可以满足您的需求。不过,就我而言,我会推荐一个特定项目的数组字典或一个链接列表字典。 –
嗯。毕竟,这可能是最好的方法。我会尝试使用包含Vectors的字典。谢谢。 – Mattias