2009-12-08 34 views
0

突然间,Flex似乎不喜欢变量声明。例如,我写(在mxml组件的脚本部分)一个神秘错误的故事Flex/Actionscript

<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没有被定义。这对我来说没有任何意义。任何可能出错的猜测?它突然间发生了,当我把进化ArrayCollection调用没有参数的简单构造函数时。我想用一个while循环来添加项目,但现在我已经擦除了几乎所有的代码,并且我无法弄清楚出了什么问题,它似乎不再识别我的变量了!我要疯了。

回答

3

如果你把你的循环包装在一个函数中,你将会遇到这个问题。事实上,无论何时你试图在函数外部运行代码,你都会得到这样的错误。

例如,如果你添加了一些代码设置进化的ArrayCollection的.source属性,像这样:

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

那么你会得到在该行的错误,告诉你,“进化”是不确定的。

希望有所帮助。

+0

哈哈,那对我来说有点愚蠢。谢谢,我认为我自己需要一段时间才能注意到它,在XML中编写像Actionscript这样的代码有时会让我感到困惑。 – webdreamer 2009-12-08 20:37:56

1

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

我不认为你可以在实际函数外运行while循环。而且,真的,也不会有任何理由。如果您需要立即运行该循环,则可以将其放入初始化函数中。

1

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

+0

感谢您的信息。我知道你做不到,我不知道为什么。 – invertedSpear 2009-12-10 21:50:11