对象不查找变量的范围树

时间:2009-08-04 22:51:17

标签: flex flash actionscript-3

我有一个由对象文字定义的简单对象,并且为此对象分配了几个函数。在函数内部,我尝试访问全局变量,它只是未定义。 Flex调试器告诉我变量就在范围树的正上方。

是的,我知道我可以使用'this'来访问Thing,但这并不能解决我的范围问题。

Project 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 个答案:

答案 0 :(得分:1)

我不确定你的麻烦是什么,但我将你的确切代码剪切并粘贴到一个新的Flex项目中,尽管语法错误很简单(Thing声明中有额外的尾随逗号),但它跟踪了我的期望:

Test0.blah

(假设我的项目名称是Test,而面板blah是第一个对象)。

我使用Flex 3.3然后在Flash Player 10,0,22,87

上尝试了Flex 3

修改
如果我按照评论中的说明改变项目属性,我现在可以重现:
Flex Builder - &gt;属性 - &gt; Flex编译器 - &gt;需要Flash Player版本 - &gt; 10.0.0

使用此设置,行为不会出现在Flex 3.0中,但 出现在3.2,3.3和3.4中。

我建议这是一个错误,你应该找到解决它的方法。

答案 1 :(得分:0)

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

            };
只是一个猜测...但我遇到了很多问题,这是必要的...太醉了,累了试试这是否能解决问题......但是对你来说,它应该只是一个开始傍晚/晚上......:D

格尔茨

back2dos