AS3: переопределение прокси-метода getProperty - PullRequest
2 голосов
/ 06 июня 2011

Я столкнулся со специфической проблемой при попытке использовать класс Proxy и переопределить метод getProperty().Я привел мой пример кода класса ниже:

package
{
    import flash.utils.Proxy;
    import flash.utils.flash_proxy;

    public class Thing extends Proxy
    {
        // holder object
        private var _holder:Object;

        /**
         * Constructor
         */
        public function Thing()
        {
            _holder =
            {
                stuff: "thing"
            };
        }

        /**
         * Override getProperty
         */
        override flash_proxy function getProperty(name:*):*
        {
            trace(name + " being accessed");
            return _holder[name];
        }
    }
}

Я пытался использовать это, чтобы сделать некоторые свойства доступными только для чтения (согласно ответу на мой предыдущий вопрос ), однако есть какое-то странное поведение, которое я не могу сработать.

Используя вышеизложенное, я пытаюсь получить доступ к переменной stuff следующим образом:

var t:Thing = new Thing();
trace(t.stuff);

Однакоэто приводит к следующей ошибке:

1119: Доступ к возможно неопределенным вещам свойств через ссылку со статическим типом Thing.

Но если я это сделаюэто:

trace(t["stuff"]);

Работает нормально.Что я делаю не так?

1 Ответ

3 голосов
/ 06 июня 2011

Это потому, что ваш класс не является динамическим, просто добавьте ключевое слово "dynamic", и все будет хорошо:

public dynamic class Thing extends Proxy
...