在Flash AS3中查找数组中对象的索引

时间:2012-02-22 00:17:01

标签: flash actionscript-3

  

可能重复:
  flash as3 - how do I find an object's index in an array

我有一个类似于:

的对象数组
[
    {
        start : 0.000,
        end   : 0.100
    },
    {
        start : 0.100,
        end   : 0.200
    },
    {
        start : 0.200,
        end   : 0.300
    }
]

我是否可以通过快速方式逐帧查询此对象,以找出值(在这种情况下是音频播放的当前时间)所在的位置?

在与我的同事聊天之后,他们建议我将其枚举为一大堆索引值,并引用与之关联的索引,例如

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

也许更好的解决方案是使用Dictionary (link)

字典是存储关联数据的快捷方式。

虽然我并不完全确定您尝试解决的问题,但其他数据类型可能更适合您。我只是让您知道您可以使用的其他选项。