如何访问Utility类中的var数组

时间:2011-01-25 02:33:34

标签: actionscript-3

如果我的主要课程我定义了

      var arrItems:Array=[];

并在实用程序类(在不同的文件中)中定义

     public class Util
{
    public function Util()
    {
         var choices:Array[] = {
            "1 item1 ",
            "2 item2 ",
            "3 item3 " };

我的主类如何访问Util.choices的元素并将它们分配给arrItems?

在Java中我会做

                   arrItems[i] = Util.choices[i];

4 个答案:

答案 0 :(得分:1)

这是一个范围问题。您已在Util类的构造函数中声明了数组选择,因此只能通过此函数内部的名称引用它。您需要做的第一件事就是将其移至类级别。

public class Util{
    //Also note you use [] for arrays, and {} for objects.
    public var choices:Array = ["item 1", "item 2", "item 3"];
}

所以,既然选择存在于类级别,我们可以通过创建该类的实例来引用它,就像这样......

//Inside another class somewhere...
var util:Util = new Util();
trace(util.choices[0]); // Outputs "item 1"

但是,根据您的示例,您似乎只需要为整个程序提供此数组的一个实例。一个简单的方法是使用static修饰符,它将变量附加到实际的类(而不是类的实例),你最终得到类似的东西......

public class Util{
    public static var choices:Array = ["item 1", "item 2", "item 3"];
}

//Anywhere else in your program
trace(Util.choices[0]);  // Outputs "item 1"

答案 1 :(得分:1)

在AS3中相同,不同之处在于您应该将选项声明为静态var,如此

public class Util
{
    public static var choices:Array = {'item1' , 'item2' , 'item3'};
}

答案 2 :(得分:0)

我认为你是在哄骗自己来自Java。看看阵列上的AS3指南即可开始。例如Introduction to Arrays in ActionScript 3.0 - republicofcode.com。希望这会让你更好地理解。

您可能还想查看Static vars

答案 3 :(得分:0)

这取决于你将如何使用选择。选择数组是不变的还是会随着时间而变化?首先让我们假设它是常量,你可以使它成为Util类的静态属性。

public class Util{
  public static const choices:Array=["item1", "item2"];
}
现在你可以访问这样的选择:arrItems[i]=Util.choices[i];
如果选择不是常数,它可能会随着时间而变化。在这种情况下。
public class Util{
  private var _choices:Array;
  public function Util():void{
    choices=["item1", "item2"];
  }
  public function get choices():Array {
    return _choices;
  }
}
在主代码中,您可以通过实例化Util类来访问选项。
var u:Util=new Util();
arrItems[i]=u.choices[i];