我开始使用新的flex hero sdk将这个flex应用程序转换为可在android上运行。
我已经更换了所有与移动设备不兼容的组件,并使其成功运行了几次。

当我使用运行原始Web应用程序的相同库时,它运行良好。

但是,最大的问题是启动移动应用程序时出现这些随机的无效BitMapdata错误。
这是整个输出。

ArgumentError: Error #2015: Invalid BitmapData.
at flash.display::BitmapData/ctor()
at flash.display::BitmapData()
at spark.primitives::BitmapImage/http://www.adobe.com/2006/flex/mx/internal::applySource()[E:\dev\hero_private_beta\frameworks\projects\spark\src\spark\primitives\BitmapImage.as:1337]
at spark.primitives::BitmapImage/http://www.adobe.com/2006/flex/mx/internal::validateSource()[E:\dev\hero_private_beta\frameworks\projects\spark\src\spark\primitives\BitmapImage.as:1652]
at spark.primitives::BitmapImage/commitProperties()[E:\dev\hero_private_beta\frameworks\projects\spark\src\spark\primitives\BitmapImage.as:902]
at spark.primitives.supportClasses::GraphicElement/validateProperties()[E:\dev\hero_private_beta\frameworks\projects\spark\src\spark\primitives\supportClasses\GraphicElement.as:3487]
at spark.components::Group/commitProperties()[E:\dev\hero_private_beta\frameworks\projects\spark\src\spark\components\Group.as:931]
at mx.core::UIComponent/validateProperties()[E:\dev\hero_private_beta\frameworks\projects\framework\src\mx\core\UIComponent.as:8095]
at mx.managers::LayoutManager/validateProperties()[E:\dev\hero_private_beta\frameworks\projects\framework\src\mx\managers\LayoutManager.as:597]
at mx.managers::LayoutManager/doPhasedInstantiation()[E:\dev\hero_private_beta\frameworks\projects\framework\src\mx\managers\LayoutManager.as:760]
at mx.managers::LayoutManager/doPhasedInstantiationCallback()[E:\dev\hero_private_beta\frameworks\projects\framework\src\mx\managers\LayoutManager.as:1157]

我调试了很多次,发现当它达到这种方法时
mx_internal function applySource():void
{

在BitmapImage.as中,此语句
if (!bitmapData && tmpSprite)

bitmapData == null。但是,当我运行原始的Web应用程序时,bitmapData不为null。
bitmapData值应在此代码行中确定
<s:BitmapImage id="smallTriangle" smooth="true" source="@Embed('/com/xploreplus/components/containers/panel/assets/images/smallTriangle.png')" />

现在看来,在运行移动应用程序时,它找不到图像,就像当我运行Web应用程序时,使用上述代码所在的库可以找到图像。

这个问题困扰了我好几天了,我真的开始认为这是一个错误,特别是因为它有时确实在运行。还是我在这里想念的东西。

最佳答案

我几乎可以肯定这是内存问题。错误发生在BitmapData构造函数中的事实表明,该应用试图创建尺寸无效的BitmapData(不太可能,因为它可以在您的其他版本中使用,并且图像是在编译时获取的),或者是最有可能出现Flash的情况内存不足,无法创建BitmapData(移动设备的内存通常比PC少得多)。

10-08 12:54