flex: ссылка на переменные класса - PullRequest
0 голосов
/ 03 мая 2011

У меня есть куча переменных в классе.Существуют ситуации, когда я хочу установить значение null / "temp" и т. Д. В соответствии с четко определенной логикой.Задача состоит в том, чтобы перечислить переменные в нескольких местах и ​​подвержены ошибкам.

classname.speed = NaN

classname.speedtype = "not_set"

classname.distance = NaN

classname.distancetype = "not_set"

В идеале, предпочел бы способ ссылаться на эти переменные программно и устанавливать что-то вроде "для всех переменных класса - если переменная заканчивается в типе,установить как "not_set"; для других переменных установить как NaN

Как мне этого добиться? Любые указатели помогут

Ответы [ 2 ]

1 голос
/ 03 мая 2011

Самый простой подход - написать функцию, чтобы очистить их все.
Если вы хотите что-то более автоматическое, это потребует усилий - посмотрите на introspection api . По сути, вы вызываете describeType для вашего класса, и он возвращает описание XML. Все переменные будут перечислены там, наряду с другой информацией. Затем вы можете проанализировать возвращенный XML и установить для всех переменных необходимое значение, динамически обращаясь к ним с помощью синтаксиса в квадратных скобках:

var myClass:MyClass = new MyClass();
myClass["varName"] = "new value";
0 голосов
/ 03 мая 2011

Это может быть достигнуто через Наследование , т. Е. , реализующее интерфейс или расширение класс , который содержит общие поля

public class MyClass
{
    public a:String = null;
    public b:String = null;

    public function MyClass()
    {
    }

}

, который содержит общий var и дочерний класс, может быть

public class MyClassChild extends MyClass
{
    public var c:String = null;
    public function MyClassChild()
    {
        super();
        this.a ="";
        this.b ="";
    }

}

, и вы можете привести или использовать для каждого цикла для установки значений

var temp:MyClassChild  = new MyClassChild ();

MyClass(temp).a = "Hello World";

Надежды, которые помогают

...