的背景
我正在将使用 Flex 4.5 和 AIR 2.6 构建的 AIR 应用程序更新到 Flex 4.6 和 AIR 3.3。我这样做是为了利用本机 JSON 类,并为 AIR 3.4 和 Actionscript Workers 做好准备,这两个都是我计划使用的。我也在使用 PureMVC 2.0.4。
实际的更新过程很顺利。我下载了 Flex 4.6 SDK 并在其上覆盖了 AIR 3.3 SDK。到目前为止,一切都很好。我在as3corelib中使用 JSON 类,所以我必须进行一些更改,从我的应用程序中删除对它的引用。除了那一帆风顺。随着代码编译得很好,我开始启动应用程序。
问题
这就是事情分崩离析的地方。
当应用程序启动“欢迎”视图时(这本质上是一个着陆点,其中包含“打开文件”、“新文件”等按钮以及从 Web 服务中提取的新闻提要)。背景图像显示,但 UI 不存在。以下是一些示例屏幕截图:
之前(欢迎视图的工作 4.5 版本)
之后(Welcome View 的 4.6 版本损坏。这是视图的背景图像。)
在 Flash Builder 调试器中使用大量断点逐步完成启动过程并没有发现任何明显错误。其他 UI 元素也丢失了。例如:这个标签栏只是缺少按钮
之前(工作 4.5 版本)
之后(破4.6版)
在试图确定这里发生了什么时,我一直在尽我所能玩弄应用程序(欢迎 UI 消失了,这相当困难),我发现最小化应用程序然后恢复它会导致应用程序挂起到 Windows 将“(未响应)”位添加到应用程序标题栏的程度,然后在 UI 有点正常工作的情况下正常恢复。一些示例图像:
恢复后的欢迎视图(注意向右偏远的水平线)
恢复后的 TabBar (此内容完全无视布局规则。此外,它实际上是向左滚动 - 没错,它不知何故长出了腿,只是自行离开屏幕。从来没有任何补间/动画代码附加到这个观点)
所有这些都发生在带有 Flash Builder 4.6 的 Windows 7 x64 上。
问题
这到底是怎么回事?为什么我的 UI 会像这样消失?
我觉得我缺少一些基本的东西,比如“哦,只需添加这个编译器选项”和 BAM!事情会解决的。我当然不觉得我的应用程序应该因为这次升级而完全崩溃。
有没有人在从以前版本的 Flex/AIR 升级到 Flex 4.6/AIR 3.x 时遇到过类似的问题?你是怎么解决你的问题的?
会不会是我的自定义皮肤导致了这个问题?为什么会这样?关于皮肤的话题,这似乎是一个类似的问题。
更新
我希望避免这种情况,但我并没有真正做到这一点,所以我决定开始撤出主题和外部 SWC,直到我可以让应用程序达到某种健全的功能水平并从那里恢复。我从主题开始,虽然问题不在于主题,但我指出了正确的方向。
在我的应用程序中有一个名为HRule
. 这是上述某些屏幕截图中“从经销商处打开”和“注销”按钮之间的水平规则。这个类只是一个 Spark ,里面Group
有两个Line
s 来绘制规则。
这是完整的课程:
<?xml version="1.0" encoding="utf-8"?>
<s:Group
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<s:layout>
<s:VerticalLayout
gap="0">
</s:VerticalLayout>
</s:layout>
<s:Line
xTo="{width}">
<s:stroke>
<s:SolidColorStroke
color="#000000"
alpha="0.4" />
</s:stroke>
</s:Line>
<s:Line
xTo="{width}">
<s:stroke>
<s:SolidColorStroke
color="#ffffff"
alpha="0.15" />
</s:stroke>
</s:Line>
</s:Group>
然后我像这样使用这个类:
<s:VGroup
width="300">
<s:Button
label="Button 1"
percenthWidth="100"/>
<mycomps:HRule
percenthWidth="100"/>
<s:Button
label="Button 2"
percenthWidth="100"/>
</s:VGroup>
Group
只需将基类从更改为 ,我就可以解决所有问题SkinnableContainer
。我下载了WinMerge对 Spark 的 4.5 版本Group
和 4.6 版本进行了比较,文件是相同的。
所以这就带来了一个新的问题:为什么Group
在 4.5 和 4.6 之间的行为会发生变化?