【问题标题】:Flash Builder 4.6 issue: Access to undefined property - clean its not the answerFlash Builder 4.6 问题:访问未定义的属性 - 清除它不是答案
【发布时间】:2012-01-03 09:58:34
【问题描述】:

我在 Flash Builder 中的项目中有很多奇怪的信息,为什么?

“类型未找到或不是编译时常量”和 “访问未定义的属性”、“调用可能未定义的方法”

当我去那些班级并腾出空间“”并保存时,父母班就可以了, 长时间清洁没有帮助。

有什么问题?

代码示例:

import utils.DbUtils;
....
....
public function afterDbInit():void{
                personsCollection = DbUtils.getAllObjects();
                calendarViewId.loadDefaultCalendar();
            }

但它不是 CODE 的问题,它是 Flash Builder iSSUE,当我找到 DbUtils 类文件并打开它时,多留一个空间并保存,问题就消失了。

项目正在编译,但我无法使用 ctrl+lpm 转到选定的类文件,编译器没有看到它

personsCollection = DbUtils.getAllObjects();

但经过几次调试后,这个感叹号图标和橙色圆点又出现了


<fx:Script>
        <![CDATA[
            import database.DBConnection;
            import database.Database;
            import database.DatabaseEvent;
            import database.DatabaseResponder;

我在那里有所有进口商品

【问题讨论】:

  • 调用一个可能未定义的方法 - 另一个奇怪的消息
  • 是库中有问题的代码,还是库中调用的代码?
  • 可能更多的堆栈跟踪,或者完整的错误消息。 . .它将包含更多信息,包括类名等。
  • 它的方法和类的问题......我有一些 Utils 类 - 当我去这个类时,多留一个空间并保存,然后我会在其他组件中看到这个类 -
  • 如果我不“刷新”类文件我有奇怪的信息:未定义属性的访问

标签: flash apache-flex air flash-builder


【解决方案1】:

我发现一些有趣的关于“访问未定义属性”警告的内容可能对某人有所帮助。

我正在研究一个模块(ofcMtc.mxml 和 ofcMtc.as),后来我决定我不喜欢这个设计。因此,我将 mxml 和操作脚本文件都重命名为不同的名称,以节省工作(ofcMtcOLD.mxml 和 ofcMtcOLD.as)。

然后,我使用 mxml 和操作脚本的原始文件名重新创建了相同的模块。

现在请记住,旧版本在 mxml 中仍然有一行代码与原始操作脚本文件名 (mx:script source="ofcMtc.as") 相关联 - 并且它在编译时选择了它 - 导致出现在我的新版本中的警告。

通过从 OLD mxml 文件中删除 mx:script 代码 - 警告在新版本中消失了。

希望这对某人有所帮助。

【讨论】:

    【解决方案2】:

    我对包含公共变量的类也有同样的问题。即使代码运行良好,在尝试访问该属性时它仍显示为“未定义的属性”。 Quick Fix / Assist (Ctrl + 1) 要求创建该属性,因此我选择并按下 Enter 以让代码完成帮助我。编辑删除了警告,但没有对我的班级进行任何更改。

    我会说这是一个奇怪的错误,只是想让其他遇到此问题的人快速修复/协助实际上可以帮助解决此问题。

    【讨论】:

      【解决方案3】:

      如果 DataBaseEvent 是一个外部类,而不是与 Flex 捆绑的类,您可以尝试通过它的全名来引用它。

      例如,我在自定义 JSON 实现(包 vk.api.serialization.json)时遇到了同样的错误

      我不得不改变所有的行,比如

      JSON.encode(data)
      

      vk.api.serialization.json.JSON.encode(data)
      

      它有帮助。

      【讨论】:

        【解决方案4】:

        指定全限定类名的方法也适用于我。

        因此,我从

        更改类定义

        public class NumberInputBase extends TextInput

        public class NumberInputBase extends mx.controls.TextInput

        【讨论】:

          【解决方案5】:

          您尚未导入 DatabaseEvent 类型。在 Windows PC 上,Ctrl+Shift+O 应该组织您的导入。

          【讨论】:

          • 所有导入都正常
          • 确保已定义database.DatabaseEvent
          • 一切都已定义 - Flash Builder 简直要疯了。有时我只需要在类中更改示例名称 - DbUtils -> 到 DbUtilX - 并在所有项目中更改它 - 在问题消失之后,为什么 F*** ?
          • 可能是因为已经有一个 DatabaseEvent(尽管这不应该有所作为)。要更改对某个类的所有引用,只需在项目资源管理器中重命名即可。
          • 嗯,这会很困难,因为我使用了很多额外的库
          猜你喜欢
          • 1970-01-01
          • 2014-07-14
          • 2012-05-10
          • 2011-06-07
          • 1970-01-01
          • 1970-01-01
          • 2016-09-04
          • 2022-01-11
          • 1970-01-01
          相关资源
          最近更新 更多