ГлавнаяActionScript 3 — «100 советов» › Методы getProperty и setProperty класса Proxy

Методы getProperty и setProperty класса Proxy

June 19th, 2006
Методы getProperty и setProperty используются для управления необъявленными свойствами класса. Если какое-то свойство явно не объявлено в классе, то при попытке прочитать его значение, будет вызван метод getProperty. Аналогично при записи вызывается метод setProperty.
Как и все методы класса Proxy, getProperty и setProperty объявлены в пространстве имен «flash_proxy» (flash.utils.flash_proxy), чтобы не возникало конфликтов с публичными методами. Для переопределения этих методов в своем классе обязательно нужно указывать пространство имен flash_proxy.
Пример: класс CustomObject наследуется от Proxy и переопределяет методы getProperty и setProperty для управления динамическими свойствами.

Код:
package { import flash.utils.Proxy; import flash.utils.flash_proxy; dynamic public class CustomObject extends Proxy { public var classProperty:String = "classProperty"; // объявленное свойство private var customProperties:Object = new Object(); // хранилище динамических свойств public function CustomObject() { } // Вызывается при чтении динамического свойства override flash_proxy function getProperty(name:*):* { if (name in customProperties) { return customProperties[name]; } return "Property does not exist"; } // Вызывается при записи в динамическое свойство override flash_proxy function setProperty(name:*, value:*):void { customProperties[name] = "Property "+name+": "+value; } } }
Код:
// Пример использования var myObj:CustomObject = new CustomObject(); trace(myObj.foo); // Property does not exist myObj.foo = "bar"; trace(myObj.foo); // Property foo: bar trace(myObj.classProperty); // classProperty myObj.classProperty = "bar"; trace(myObj.classProperty); // bar

Обратите внимание, что методы getProperty и setProperty вызываются при попытке доступа к необъявленным свойствам класса. В примере, при доступе к явно объявленному свойству «classProperty» эти методы не вызывались.

Категория: ActionScript 3 — «100 советов» Ярлыки: ,

Смотрите также

Оператор «in» instance name мувиклипа на сцене
  1. Пока без комментариев.
  1. Пока нету.