Actionscript - Как переопределить получение предопределенных свойств классов? - PullRequest
0 голосов
/ 13 января 2011

У меня есть класс, который расширяет класс Proxy и имеет статически определенную переменную-член с именем num:

public dynamic class TestProxy extends Proxy
{
 private var num:Number = 100;

 public function TestProxy()
 {
  super();
 }

 override flash_proxy function getProperty(name:*):*
 {
  trace("***** "+name);
 }
}

Я хочу, чтобы getProperty () вызывался при попытке доступа num. Он работает для любого поля, которое еще не существует, но не для предопределенных полей.

Есть ли способ сделать это? Можно ли как-то динамически избавиться от num? Или что-то еще?

Ответы [ 2 ]

0 голосов
/ 14 января 2011

Нет способа Proxy получить доступ к частным предопределенным свойствам класса. Либо сделайте его общедоступным, если хотите, чтобы к нему обращались, либо переименуйте переменную, а затем ответьте на num вызовы:

public dynamic class TestProxy extends Proxy
{
    private var _num:Number = 100;

    public function TestProxy()
    {
        super();
    }

    override flash_proxy function getProperty(name:*):*
    {
        if (name == "num")
        {
            return _num;
        }
    }
}
0 голосов
/ 13 января 2011

Если это предопределено, почему вы не можете использовать метод получения / установки и прокси-доступ к частному var таким образом?

private var _num:Number = 100;
//....
function get num () : Number { }
function set num (val : Number) : void { }
...