一个神秘的bug Flex / Actionscript的故事

时间:2009-12-08 20:03:30

标签: flex actionscript-3 debugging flex3 flexbuilder

突然,Flex似乎不喜欢变量声明。例如,我写(在mxml组件的脚本部分)

    <mx:Script>
        <![CDATA[
            import mx.collections.ArrayCollection;


            var i:int = 1;
            while(i< 9) i++;

            [Bindable]
              public var evolution:ArrayCollection = new ArrayCollection();


        ]]>
   </mx:Script>

它说变量i尚未定义。这对我没有任何意义。什么可能出错?当我将evolution ArrayCollection调用不带参数的简单构造函数时,它突然发生了。我想用while循环添加项目,但现在我已经删除了几乎所有的代码,我无法弄清楚出了什么问题它似乎不再能识别我的变量了!我疯了。

3 个答案:

答案 0 :(得分:3)

如果你将循环包装在一个函数中,你将会遇到这个问题。

事实上,无论何时尝试在函数外部运行代码,都会出现这样的错误。

例如,如果您添加了一些设置evolution ArrayCollection的.source属性的代码,如下所示:

evolution.source = [1, 2, 3];

然后你会在那一行得到一个错误,告诉你''evolution'是未定义的。

希望有所帮助。

答案 1 :(得分:1)

它没有告诉你变量i没有定义,它告诉你我没有定义属性。

我认为你不能在实际函数之外运行while循环。而且,真的,也没有理由。如果你需要立即运行该循环,可以将它放在初始化函数中。

答案 2 :(得分:1)

虽然在mxml文件中,您会看到很多xml标记,但是在编译mxml文件时,它会被转换为类。因此,不可能只在不在函数中的类中编写一些代码。