Как получить доступ к массиву var в классе Utility - PullRequest
0 голосов
/ 25 января 2011

Если мой основной класс я определяю

      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 ]

1 голос
/ 25 января 2011

То же самое в AS3, за исключением того, что вы должны объявлять выборы как статические переменные, например,

public class Util
{
    public static var choices:Array = {'item1' , 'item2' , 'item3'};
}
1 голос
/ 25 января 2011

Это проблема объема. Вы объявили выбор массива внутри конструктора вашего класса 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"

Однако, учитывая ваш пример, кажется, что вам нужен только один экземпляр этого массива для всей вашей программы. Самый простой способ сделать это - использовать статический модификатор, который присоединяет переменную к реальному классу (в отличие от экземпляра класса), и в итоге получается нечто подобное ...

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"
0 голосов
/ 25 января 2011

Это зависит от того, как вы собираетесь использовать выбор. Является ли массив выбора постоянным или он будет меняться со временем? Сначала давайте предположим, что вы можете сделать это статическим свойством класса Util.

public class Util{
  public static const choices:Array=["item1", "item2"];
}
Теперь у вас есть доступ к таким вариантам: arrItems[i]=Util.choices[i];
Теперь, если варианты не постоянны и могут меняться со временем. В этом случае.
<code>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];
0 голосов
/ 25 января 2011

Я думаю, что вы обманываете себя, приходя с Java.Взгляните на руководство AS3 по массивам, чтобы начать.Например, Введение в массивы в ActionScript 3.0 - Republicofcode.com .Надеюсь, это поможет вам лучше понять.

Возможно, вы захотите взглянуть на Статические переменные .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...