Недоступная существующая переменная - PullRequest
1 голос
/ 13 июня 2010

Я новичок в as3, может быть, поэтому я не понимаю, почему setInterval вызывает ошибку.

<mx:Script>
    <![CDATA[
        import flash.utils.setInterval;
        import mx.controls.Alert;

        [Bindable]
        public var MyInt:int = 500;

        setInterval(function():void{ ++MyInt; },1000);

    ]]>
</mx:Script>

У меня есть метка, где значение MyIntстановится видимым, привязка работает отлично, я протестировал ее несколькими способами, и я создал кнопку, она увеличивает число, но если я использую функцию setInterval, я получаю ошибку: Access of undefined property myInt.

Зачем?Что вызывает это?Пожалуйста, объясните это, чтобы я мог избежать подобных ошибок.Спасибо

1 Ответ

3 голосов
/ 13 июня 2010

Я не знаю много о Flex, но я думаю, что проблема в том, что этот код:

setInterval(function():void{ ++MyInt; },1000);

выполняется так, как если бы он был помещен в определение класса, вне какой-либо функции.Это делает код статическим инициализатором.То есть он запускается в статическом контексте, что означает, что он не имеет доступа ни к какому экземпляру, поскольку при запуске кода экземпляр еще не был создан.

С static код работает нормально.

Вы, вероятно, не хотите, чтобы MyInt был статичным.Поэтому вы должны поместить вызов setInterval в метод экземпляра.Предполагая, что init вызывается из обратного вызова mx:Application initialize, это должно работать нормально:

    [Bindable]
    public var MyInt:int = 500;

    private function init():void {
        setInterval(function():void { ++MyInt; trace(MyInt); },1000);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...