我正在尝试在Flex中创建一个集合类,仅限于容纳我正在使用的特定类型的数据(接口)。我选择不扩展ArrayCollection类,因为它太通用了,并没有真正给我编译时的安全性。在它的简单形式中,我的集合包含一个数组,我管理如何添加和删除对象等。
我真正希望能够做的是为每个循环使用这些集合。它绝对不像c#那样直接实现IEnumerable和IEnumerator(或者只是使用泛型Collection)。有没有办法在动作脚本中执行此操作,如果有,有关如何实现的任何信息?
干杯
答案 0 :(得分:2)
看看Vector<>
。这是最好的,因为你可以在Flex中使用类型集合(4个以上)。但是,您需要实现自己的类。一种方式似乎是使用Iterator Pattern。
另外,请查看this SO帖子。
答案 1 :(得分:2)
您需要扩展Flash Proxy类。扩展代理允许您改变“获取”和“设置”工作的方式,以及“for..in”和“for..each”循环。您可以找到更多详细信息on the Livedocs.
以下是您的问题的示例:
package
{
import flash.utils.Proxy;
import flash.utils.flash_proxy;
public class EnumerableColl extends Proxy
{
private var _coll:Array;
public function EnumerableColl()
{
super();
_coll = [ 'test1', 'test2', 'test3' ];
}
override flash_proxy function nextNameIndex( index:int ):int
{
if ( index >= _coll.length ) return 0;
return index + 1;
}
override flash_proxy function nextValue( index:int ):*
{
return _coll[ index - 1];
}
}
}