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

Метод callProperty класса Proxy

June 19th, 2006
Если в классе наследнике от Proxy попытаться вызвать несуществующий метод, то будет вызван метод callProperty, которому передается название метода с массивом аргументов. Это можно использовать для создания динамических методов.

Как и все методы класса Proxy, callProperty объявлен в пространстве имен «flash_proxy» (flash.utils.flash_proxy), чтобы не возникало конфликтов с публичными методами. Для переопределения метода в своем классе обязательно нужно указывать пространство имен flash_proxy.

Пример: класс CustomObject наследуется от Proxy и переопределяет метод callProperty для управления динамическими методами.

Код:
package { import flash.utils.Proxy; import flash.utils.flash_proxy; dynamic public class CustomObject extends Proxy { private var variables:Object = new Object(); // хранилище переменных public function CustomObject() { } // Вызывает при обращении к динамическому методу override flash_proxy function callProperty(name:*, ... args):* { // Преобразуем name в строку name = String(name); var callType:String = name.slice(0,3); // get или set var callVariable:String = name.slice(3); // название переменной switch(callType) { case 'get': // Если «get», то возвращает значение переменной, если она существует if (callVariable in variables) { return variables[callVariable]; } return null; case 'set': // Если «set» запомним новую переменную variables[callVariable] = args[0]; } } } }

В этом примере, с использованием callProperty, реализованы динамические методы для чтения и записи «переменных».

Код:
// пример использования var myObj:CustomObject = new CustomObject(); trace(myObj.getMyVar()); // null myObj.setMyVar("foo"); trace(myObj.getMyVar()); // foo myObj.setMyVar("bar"); trace(myObj.getMyVar()); // bar trace(myObj.MyVar); // не существует (get property error)

В начале getMyVar возвращает null, поскольку переменная «MyVar», еще не определена. После записи при помощи setMyVar, getMyVar возвращает записанное значение.

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

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

Аналог duplicateMovieClip Копирование динамической графики с помощью класса Proxy
  1. Пока без комментариев.
  1. Пока нету.