ActionScript вызывает частные функции путем изменения общедоступных переменных?

Я никогда не пробовал делать это раньше, поэтому немного приплыл в голове. я хотел бы иметь общедоступное логическое значение с именем enabled в настраиваемом классе myClass. если его нужно изменить, как мне запустить функцию из этого изменения?

мне добавить прослушиватель событий Event.CHANGE к моей переменной? могу ли я сделать это? или есть способ более стандартный?


person Chunky Chunk    schedule 13.06.2010    source источник


Ответы (1)


Обычно мы используем для этого свойства.
Свойства подобны общедоступным переменным снаружи - вы можете установить instance.enabled = true; и так далее .. Но вы определяете свойства как функции получения и / или установки для класса.
Они идеальное место для выполнения пользовательской логики при изменении значений.

Например:

public class CustomClass {
    private var _enabled:Boolean = false;

    public function set enabled(value:Boolean):void {
        trace('CustomClass.enabled is now', value);
        this._enabled = value;
    }

    public function get enabled():Boolean {
        trace('CustomClass.enabled was retrieved');
        return this._enabled;
    }
}

Обратите внимание, что они не могут иметь то же имя, что и ваша частная переменная, и вам не нужно определять их обе. На самом деле вам даже не нужна переменная для установщика / получателя. Вы можете использовать их как любую функцию - они просто предоставляют вам другой синтаксис.
Например:

var object:CustomClass = new CustomClass();
object.enabled = false;
if (object.enabled) {
    ...
}

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

Справочник AS3 по геттерам и установщики.

person mrkishi    schedule 13.06.2010
comment
Разве ему не нужно что-то, что вызывает функцию при изменении свойства, чтобы при включении объекта (динамически?) Что-то прослушивало изменение? - person phwd; 13.06.2010
comment
Если так, то я неправильно понял, что он имел в виду. - person mrkishi; 13.06.2010
comment
ну, можно сделать вызов функции установщика или фактически включить код, который будет обрабатывать изменение на основе нового установленного значения. Это формат кода, который используют API-интерфейсы AS3, чтобы мы могли вызывать такие свойства, как mySprite.alpha = 0.5 или myTextField.enabled = true? - person Chunky Chunk; 13.06.2010
comment
Да, и поэтому вы можете их переопределить - еще одно преимущество свойств. И если вам нужно событие CHANGE извне, вы все равно можете реализовать интерфейс EventDispatcher и отправить событие из установщика ... Достаточно просто. - person mrkishi; 13.06.2010