Объект не ищет дерево областей действия для переменных - PullRequest
0 голосов
/ 05 августа 2009

У меня есть простой объект, определенный литералом объекта, и ему назначено несколько функций. Внутри функций я пытаюсь получить доступ к глобальным переменным, и это только становится неопределенным. Отладчик Flex говорит мне, что переменные находятся прямо в дереве областей действия.

Да, я знаю, что могу получить доступ к Thing, используя «this», но это не решает мою проблему с областью действия.

Настройки компилятора проекта Flex: Flex SDK 3.4, требуется Flash Player 10.x.

Пример:

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="Thing.bling();">

    <mx:Script>
        <![CDATA[
            var Thing:Object = {
                doStuff: function():void {
                    trace(blah); //blah is undefined
                },
                bling: function():void {
                    Thing.doStuff(); //Thing is undefined
                },

            };
        ]]>
    </mx:Script>

    <mx:Panel id="blah">

    </mx:Panel>
</mx:Application>

Ответы [ 2 ]

1 голос
/ 05 августа 2009

Я не уверен, в чем ваша проблема, но я вырезал и вставил ваш точный код в новый проект Flex, и, несмотря на простую синтаксическую ошибку (дополнительная запятая в объявлении Thing), он проследил то, что я ожидал:

Test0.blah

(Учитывая, что мой проект называется Test, а панель blah - первый объект).

Я использовал Flex 3.3, затем попробовал Flex 3 на Flash Player 10,0,22,87

редактирование:
Я могу воспроизвести сейчас, если я изменю свойства проекта, следуя инструкциям в комментариях:
Flex Builder -> Свойства -> Компилятор Flex -> Требуется версия Flash Player -> 10.0.0

С этим параметром поведение не отображается во Flex 3.0, но действительно появляется в 3.2, 3.3 и 3.4.

Я полагаю, что это ошибка, и вы должны найти способ ее обойти.

0 голосов
/ 05 августа 2009

1001 * попробовать *

            var Thing:Object;
            Thing = {
                    doStuff: function():void {
                            trace(blah); //blah is undefined
                    },
                    bling: function():void {
                            Thing.doStuff(); //Thing is undefined
                    },

            };

просто предположение ... но я столкнулся с множеством проблем, когда это было необходимо ... слишком пьяным и уставшим, чтобы попытаться решить, решит ли это проблему ... но для вас это должно быть только начало вечер / ночь ...: D

Greetz

back2dos

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...