我正在将使用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版本)
之后(破解4.6版本的欢迎视图。这是视图的背景图像。)
在Flash Builder调试器中使用大量断点逐步完成启动过程并未发现明显错误。其他UI元素也缺失。例如:此标签栏只是缺少按钮
之前(工作4.5版)
之后(破碎的4.6版)
在尝试确定这里发生了什么时,我一直在玩应用程序尽可能地使用应用程序(欢迎用户界面消失了这是相当困难的)我发现最小化应用程序然后恢复它将导致应用程序挂起到Windows将“(无响应)”位添加到应用程序标题栏,然后正常恢复与UI有点 - 排序 - 主要工作。一些示例图片:
恢复后的欢迎视图(请注意远离右侧的水平规则)
恢复后的TabBar(这个内容完全忽略了布局规则。此外它实际上向左滚动 - 这是正确的,它以某种方式增长了腿并且只是在屏幕上移动所有它自己。从来没有任何补间/动画附加到此视图的代码)
所有这一切都发生在使用Flash Builder 4.6的Windows 7 x64上。
这到底是怎么回事?为什么我的UI会像这样消失?
我觉得我缺少一些基本的东西,比如“哦,只需添加这个编译器选项”和BAM!事情将得到解决。我当然不认为我的应用程序应该完全被这次升级打破。
从先前版本的Flex / AIR升级到Flex 4.6 / AIR 3.x有没有遇到类似问题?你是怎么解决问题的?
可能是我的自定义皮肤造成了这个问题吗?为什么会这样?关于皮肤的主题,这似乎是similar question。
我本来希望避免这种情况,但我并没有真正得到这个,所以我决定开始推出主题和外部SWC,直到我能够让应用程序达到一些理智的功能并从那里开始工作。我从主题开始,虽然问题不在于主题,但我指的是正确的方向。
在我的应用中,有一个名为HRule
的课程。这是上面一些屏幕截图中“从经销商处打开”和“退出”按钮之间的横向规则。这个类只是一个Spark Group
,里面有两个Line
来绘制规则。
这是完整的课程:
<?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来对4.5版本的Spark Group
进行差异,而4.6版本和文件完全相同。
因此,这提出了一个新问题:为什么Group
的行为会在4.5和4.6之间变化?