在Flex中创建类型安全的集合

时间:2009-03-17 15:54:53

标签: flex collections

我正在尝试在Flex中创建一个集合类,仅限于容纳我正在使用的特定类型的数据(接口)。我选择不扩展ArrayCollection类,因为它太通用了,并没有真正给我编译时的安全性。在它的简单形式中,我的集合包含一个数组,我管理如何添加和删除对象等。

我真正希望能够做的是为每个循环使用这些集合。它绝对不像c#那样直接实现IEnumerable和IEnumerator(或者只是使用泛型Collection)。有没有办法在动作脚本中执行此操作,如果有,有关如何实现的任何信息?

干杯

2 个答案:

答案 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];
        }

    }
}