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

19

我们正在将我们的Flex-3.2应用程序迁移到Flex 4.1,主要是为了利用新的文本流/引擎功能。在第一步中,我们决定编译为仅MX并处于Flex-3兼容模式

感谢一些有用的资源(

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

有Flex 4迁移经验吗?

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

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

但是我对运行时差异感到惊讶,从无法将ResultEvent.currentTarget强制转换为HTTPService(显然是在3.5中引入的)到许多布局问题和事件分派的差异(例如,我们的一个遗留组件侦听添加事件,它似乎再也没有得到过)。

看起来很少有关于此的文档。我想找到一份详细更改列表,这样我们就不必依赖QA希望发现所有问题了。

该文档列出了一些, 但似乎不全面。 有人有更好的记录更改的清单吗?

谢谢 Stefan

PS. 我已经发现的具体示例列表:

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

<?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中做同样的操作,你会看到两个事件都触发了。

显然,这是一个bug。可能有办法解决,但肯定会大大降低我的信任水平。

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

也是一个bug。很容易解决,但是这么明显的问题怎么可能会被忽略呢?

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

请参见此处的帖子。


1
如果您提出具体问题来解决具体问题,那么您的运气会更好。 - JeffryHouser
1
问题是:是否有一个从SDK 3.2到4.1的所有更改的全面列表?鉴于具体问题,即添加事件不再像以前那样触发,并且在运行我的应用程序时观察到许多差异(与兼容性一起),我担心否则必须遍历所有执行路径以查找所有潜在问题,这是一项相当艰巨的任务。 - Stefan
你最好的选择可能是使用Jira页面来尝试缩小可能影响你的问题范围,但实际上,使用一个刚出炉、没有经过太多使用/修复的版本,自然会遇到这些问题。我理解你的担忧,但正如之前所述,这就是为什么创建尽可能多的单元测试非常重要的原因。 - shaunhusain
@shaunhusain - 感谢您的意见。尽管我全力支持单元测试,但我对此持不同意见。我们遇到的问题是无法通过单元测试发现的。在我看来,提供所有UI交互的测试以发现1)和2)是一种浪费时间,因为UI是变化中的。3)更像是一个Flash Builder的问题。尽管如此,我们还是继续进行了下去,因为我们想要使用新的文本布局功能。在这方面,我们向Adobe提交了错误报告,但反应并没有过于有帮助。但我们已经达到了一个让自己满意的状态,并且肯定会继续使用Flex 4。然而,我觉得它发布得太早了。 - Stefan
嗯——显然即使作为所有者,我也不能只是关闭这个问题。但我也不想删除它,因为有些人把它标记为收藏。Stackoverflow上的人们如何处理这种情况?Flex3到4变化的完整列表链接对我个人来说已经没有帮助了,但可能对其他人有所帮助。然而,6个月过去了,我认为这个问题永远不会得到回答。 - Stefan
显示剩余2条评论
1个回答

1

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

1) 自从Flash Player 9发布以来,"add"事件就不再是可靠的了。这是一个常见的错误。尝试将显示列表中的MovieClip创建为一个子项,并在其中添加具有Event.ADDED侦听器的子项。在某些情况下(不知道确切的情况),它不起作用(Adobe失败)。但是,当您想要检测它是否已经在应用程序的显示列表中时,请改用"added"或"addedToStage" Flex事件。

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

3) 我从未见过这种情况(即使在兼容模式下)。你能展示一个例子吗?您是否检查了应用程序编码与您在字符串中使用的编码是否相同?也许由于字符编码(或者您的编辑器)的原因,字符串表可能会造成一些混淆。尝试其他编辑器,并使用SED在Linux shell上验证代码文件内容。通过查找和替换,您可以轻松解决它。


感谢您的输入。第三个问题可能与从其他源(如Komodo)复制代码到Flex Builder有关,然后在Flash Builder 4中开始出现问题。由于我在大约6个月前开放了这个请求以获取完整的更改列表,并且我们最终成功地将应用程序移植到了Flash Builder 4,所以现在我要关闭它。 - Stefan
你可以查找正确的ASCII字符代码,并尝试通过按住ALT键并使用数字键输入字符编号来输入它。例如,ALT + 0128会产生欧元符号。 - Cninroh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接