【问题标题】:Story of a mysterious bug Flex/ Actionscript一个神秘的 bug Flex/ Actionscript 的故事
【发布时间】:2010-12-24 13:51:45
【问题描述】:

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

【问题讨论】:

    标签: apache-flex actionscript-3 debugging flex3 flexbuilder


    【解决方案1】:

    如果您将循环包装在一个函数中,您将解决这个问题。

    事实上,无论何时你尝试在函数之外运行代码,你都会收到这样的错误。

    例如,如果您添加了一些代码来设置进化数组集合的 .source 属性,如下所示:

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

    那么你会在该行得到一个错误,告诉你“进化”是未定义的。

    希望对您有所帮助。

    【讨论】:

    • 大声笑,我有点傻。谢谢,我想我自己需要一段时间才能注意到它,在 XML 中编写 Actionscript 之类的东西有时仍然让我感到困惑。
    【解决方案2】:

    它不是告诉你变量 i 没有定义,而是告诉你属性 i 没有定义。

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

    【讨论】:

      【解决方案3】:

      虽然在 mxml 文件中,你会看到很多 xml 标签,但是当 mxml 文件被编译时,它会被翻译成一个类。因此,不可能只在类中编写一些不在函数中的代码。

      【讨论】:

      • 感谢您提供的信息。我知道你做不到,我不知道为什么。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-05
      • 1970-01-01
      • 2014-02-03
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多