多年来,我一直在使用 Flex / Flash Builder。最新版本的 Flash Builder (4.7) 似乎有很多问题,其中最大的问题是:
- 不检测
ID
MXML 中的组件。例如,您无法查找组件 ID 的用法。将光标保持在组件的 ID 上甚至不会标记ID 的出现。相反,它标记id
了 MXML中实际单词的出现。 - 极慢。
我正在认真评估迁移到 IntelliJ IDEA 12,尤其是在阅读了许多经验丰富的 Flex 开发人员对它赞不绝口并推荐它之后。
我尝试过这个。我花了一段时间才熟悉 IDE 的新术语(这篇文档和 JetBrains 非常乐于助人的支持人员让我很容易理解)。
我能够使用 Adobe Flex 4.6 SDK 在 IDEA 中设置我的(大型)项目并让它编译得很好。但我注意到我的 AS 文件中突出显示的许多“错误”实际上都是误报。
ActionScript 编辑器似乎无法识别 MXML 中定义的对象。显然,这是 IDEA 中的一个已知错误(在此处跟踪)。而且这个bug已经存在2年多了!
引用 JetBrains 支持人员的话:
我必须承认,突出显示不包含类但包含在
mxml
as<fx:Script source="some_file.as"/>
中的 ActionScript 文件可能是 IntelliJ IDEA 代码突出显示的唯一薄弱部分。如果您在 CDATA 中嵌入 AS 代码<fx:Script/>
而不是作为外部*.as
文件引用,则错误的错误突出显示将消失。虽然我知道这并不总是需要的。恐怕修复不会进入 12 版本,因为发布很快而且修复风险太大。问题的优先级取决于投票和用户反馈。到目前为止,我们只有 2 票 (http://youtrack.jetbrains.com/issue/IDEA-52598),由于修复非常复杂,我们仍然没有实施它,认为这是一个罕见的用例。我希望在 12.x 更新版本之一中修复它。
我的项目是一个巨大的项目,有巨大的 MXML 文件,每个 MXML 的 AS 代码甚至更多。因此,出于组织目的,我需要在逻辑上将它们拆分为较小的文件。因此,将 AS 代码与 MXML 合并是不切实际的。错误的错误突出显示会大大降低代码的可读性。此外,它不允许在 AS 代码中单击 Control / Command-click组件 ID 快速导航到 MXML 中的组件定义(顺便说一句,现在在 FB 4.7 中也被破坏了,但在 FB 4.6 中运行良好)。
不幸的是,IDEA 中的这个错误对我来说是一个交易破坏者。但我想知道其他 Flex 开发人员如何能够克服/解决这个看似严重的错误。
让我难以置信的是,只有 2 人受到了这个 bug 的影响,尤其是在有这么多 Flex 开发人员推荐 IDEA 的情况下。也许我做错了什么?
所有 Flex 开发人员,我将不胜感激您的想法。
更新
这是对 RIAStar 出色而详细的回答的回应。但这并不能完全帮助我。让我解释一下为什么以及如何使用<fx:Script source>
. 我使用的是 Flex 4.x,几乎只有 Spark 组件。
- 假设一个全新的 Flex 项目。主应用程序是一个 MXML 文件。
- 在这个 MXML 文件中,假设我有一个注册表单。
- 在编辑表单(在每个字段中)时,假设我必须运行验证并仅在表单完全有效时启用提交按钮。这意味着我需要将更改事件处理程序分配给表单项。事件处理程序是 AS 代码。
- 假设有一个用户名字段需要通过异步调用服务器进行类型唯一性检查。服务器通信代码也是AS代码。
- 当然,还有提交按钮处理程序,它也是 AS 代码。
我通常将所有 AS 代码放在单独的.as
文件中,并使用<fx:Script source>
. 这个 AS 代码通常很重,有很多功能和行为逻辑。很多时候,基于用户操作,甚至 MXML 中的组件和元素的布局都通过这个 AS 代码进行修改。
如果我理解你们的话,这些事件处理程序代码都不应该在这些 MXML 脚本文件中。那么,它应该在哪里呢?你们是怎么做到的?我不确定 Spark Skinning 架构与此有何关系。