Apache flex 在Flex中创建类型安全集合
我试图在Flex中创建一个集合类,该类仅限于容纳我正在使用的特定类型的数据(接口)。我选择不扩展ArrayCollection类,因为它太通用了,不能真正提供我所追求的编译时安全性。在它的简单形式中,我的集合包含一个数组,我管理如何添加和删除对象,等等 我真正想做的是在for each循环中使用这些集合。它显然不像c语言那样直截了当,在c语言中只实现IEnumerable和IEnumerator(或者只使用泛型集合)。有没有办法在动作脚本中做到这一点,如果有,还有关于如何实现的信息 干杯看一看。对于Flex中的类型化集合来说,这差不多是最好的了(从4开始)。但是,您需要实现自己的类。一种方法似乎是使用Apache flex 在Flex中创建类型安全集合,apache-flex,collections,Apache Flex,Collections,我试图在Flex中创建一个集合类,该类仅限于容纳我正在使用的特定类型的数据(接口)。我选择不扩展ArrayCollection类,因为它太通用了,不能真正提供我所追求的编译时安全性。在它的简单形式中,我的集合包含一个数组,我管理如何添加和删除对象,等等 我真正想做的是在for each循环中使用这些集合。它显然不像c语言那样直截了当,在c语言中只实现IEnumerable和IEnumerator(或者只使用泛型集合)。有没有办法在动作脚本中做到这一点,如果有,还有关于如何实现的信息 干杯看一看。
另外,看看SO post。您需要扩展Flash代理类。扩展代理允许您更改“get”和“set”的工作方式,以及“for..in”和“for..each”循环。你可以找到更多的细节 以下是您的问题的一个示例:
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];
}
}
}
是的,我正在为flash 9编程,所以我不能使用矢量对象。必须有一种方法在flex中实现某种迭代器模式,因为ListCollectionView类可以用于每个循环中。当然,看看Brian Heylin对他自己问题的回答。还有Vector。只要你的目标是Flash 10,Flex 3就可以使用。很好。。。正是我想要的,为你们俩干杯