如何在ActionScript 3中将矢量公开为可枚举类型?

时间:2011-03-08 11:17:54

标签: flash actionscript-3 oop actionscript flash-cs5

我在ActionScript 3类中有一个类成员,它看起来像这样:

private var m_myvect :Vector.<MyType> = new <MyType>[];

我通过吸气剂暴露它,就像这样:

public function get mydata() :Vector.<MyType>

当我像这样使用时,这没有用:

for (var o:Object in inst.mydata)
{
    ...
}

...因为o的类型不是MyType,而是Number,因为它枚举了矢量索引而不是数据。

我如何仅以下列方式公开向量中的数据:

  • 允许我使用for(a in b)语法
  • 不以允许修改数据的方式公开数据吗?

1 个答案:

答案 0 :(得分:3)

for( var i:int = 0; i < mydata.length; i++ )
     // this will loop using the index - get your object using mydata[i] - it will be typed

for ( var o:Object (or String) in mydata )
     // this will loop through using the keys - it's more for looping through Objects and Dictionaries

for each( var type:MyType in mydata )
     // this will loop through using the values - what you're looking for

公开阻止其被修改的数据的唯一方法(即在Vector中添加/删除项目,或更改MyType中的数据)是通过父对象(包含Vector)上的函数来实现的。 / p>

e.g。

public function changeSomething( index:int, item:* ):void
{
    // make sure the index is in bounds
    if( index < 0 || index >= this.m_myvect.length )
        return;
    this.m_myvect[i].whatever = item;
}