在兼容模式下从 Flex3 迁移到 4 后的运行时问题

Posted

技术标签:

【中文标题】在兼容模式下从 Flex3 迁移到 4 后的运行时问题【英文标题】:Runtime problems after migrating from Flex3 to 4 in compatibility mode 【发布时间】:2011-04-01 06:25:03 【问题描述】:

我们正在将 Flex-3.2 应用程序迁移到 Flex 4.1,主要是为了利用新的文本流/引擎功能。第一步,我们决定为 MX-only 和 Flex-3-compatibility mode 进行编译。

感谢一些有用的资源(

http://www.adobe.com/devnet/flex/articles/flexbuilder3_to_flashbuilder4.html

Any Flex 4 migration experience?

http://www.adobe.com/devnet/flex/articles/flex3and4_differences_02.html

) 我能够编译我们的应用程序。

但我发现自己对运行时差异的数量感到惊讶,从我无法将 ResultEvent.currentTarget 转换为 HTTPService 的问题(显然是在 3.5 中引入的)到许多布局问题到事件分派的差异(例如我们的遗留问题之一) components 监听它似乎不再得到的 add 事件)。

这方面的文档似乎很少。我想找到一份包含详细更改的列表,这样我们就不必依赖 QA 来偶然发现所有问题。

This documents lists some,但似乎并不详尽。 有人有更好的记录更改列表吗?

谢谢 斯蒂芬

附言。到目前为止我找到的具体示例列表:

1) 在 Flex 4 中,不会触发 add 事件:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
                xmlns:mx="library://ns.adobe.com/flex/mx" layout="absolute" minWidth="955" minHeight="600">

    <fx:Script>
        <![CDATA[

            private function notFired():void
            
                trace("ADDED");
            

            private function fired():void
            
                trace("COMPLETE");
            
        ]]>
    </fx:Script>

    <mx:TextArea add="notFired();" creationComplete="fired();"/>

</mx:Application>

现在在 Flex 3 中执行相同的操作,您会看到两个事件都触发了。

显然,this is a bug。可能可以解决这个问题,但肯定会大大降低我的水平或信任度。

2) 对话框/弹出窗口显示所有镜像内容。

A bug as well。很容易解决,但是这么明显的东西怎么会滑倒?

3) 注入“Ôª”字符的问题。

See post here.

【问题讨论】:

如果你提出具体问题来解决具体问题,你会有更好的运气。 问题是:是否有从 SDK 3.2 到 4.1 的完整更改列表。鉴于 add-event 没有像以前那样触发的具体问题,并且在 3 与 4 中运行我的应用程序时观察到许多差异(具有兼容性),我担心否则我必须遍历所有执行路径才能找到所有潜在的这是一项艰巨的任务。 @Stefan - 这毕竟是单元测试的原因:),我知道 Flash 功能的所有部分并不总是那么容易甚至是可能的,而且事实上很多功能都会需要目视检查,但这是切换版本的常规增长痛苦,事情已经修复,引入了功能,偶尔会弹出回归错误。 adobe.com/devnet/flex/articles/flex3and4_differences.htmlbugs.adobe.com/jira/secure/… 可能您最好的选择是使用该 Jira 页面来尝试缩小可能影响您的问题,但实际上使用的是开箱即​​用且没有经过太多使用/修复的问题由于以前的版本会自然地遇到这些问题,我理解您的担忧,但正如前面所说,这就是为什么创建尽可能多的单元测试是好的原因。 @shaunhusain - 感谢您的想法。尽管我完全支持单元测试,但我不同意。我们遇到的问题不会被单元测试发现。恕我直言,为所有 UI 交互提供测试以发现 1) 和 2) 是浪费时间,因为 UI 不断变化。 3) 更像是 Flash Builder 问题。尽管如此,我们还是继续使用新的文本布局功能。在这里,我们向 Adob​​e 提交了错误,但响应也没有太大帮助。但我们已经达到了我们满意的状态,并且肯定会继续使用 Flex 4。但我觉得它发布得太早了。 【参考方案1】:

让我们看看你的一些疑问......

1) 自 Flash Player 9 发布以来,add 从来都不是可靠的事件。这是一个常见的错误。尝试从显示列表中创建一个影片剪辑,并在其中添加一个具有 Event.ADDED 侦听器的子项。在某些情况下(不知道具体是什么情况)它不起作用(Adobe Fail)。但是,如果您想检测它是否已经在您的应用程序显示列表中,请使用“add”或“addedToStage”而不是“add”flex 事件。

2) 失败。检查框架的布局管理器源代码。

3) 我从来没有见过这个。 (即使在兼容模式下)。你能举个例子吗?您是否检查过应用程序编码是否与您在字符串上使用的相同?由于字符编码(或者可能是您的编辑器),字符串表可能会造成一些混乱。尝试其他编辑器并使用 SED 在 linux shell 上验证代码文件内容。使用 find 和 sed,您可以轻松修复它。

【讨论】:

感谢您的意见。 3) 可能与将其他来源(例如 Komodo)的代码复制到 Flex Builder 中有关,这随后开始在 Flash Builder 4 中引起问题。当我打开此请求以获取完整的更改列表大约 6 个月时,我们最终成功移动了我们的应用程序到 Flash Builder 4 我现在将其关闭。 您查找正确的 ANCII 字符代码并尝试通过按住 ALT 键并用数字键键入字符编号将其输入代码。例如 ALT + 0128 产生€符号。

以上是关于在兼容模式下从 Flex3 迁移到 4 后的运行时问题的主要内容,如果未能解决你的问题,请参考以下文章

如何在不破坏 Zabbix 服务器的情况下从 php 5.4 迁移到 7.3?

如何在兼容模式下从 IE10 文本框中删除清除按钮(“X”按钮)?

Django 迁移:如何只允许在 --fake 模式下运行?

如何运行配置类迁移的 Seed() 方法

如何将 ExtJS 3.2 迁移/升级到 ExtJS 4.2 下载以及如何下载迁移的文件?

Grails 2.4.4 与 Java 8 的兼容性