2011-02-23 3 views
6

私はこのフレックスアプリケーションを新しいflex hero sdkを使用してアンドロイドで実行するように変換を開始しました。 私はすでにモバイルに互換性のないコンポーネントをすべて置き換えて、それを数回実行することに成功しました。無効なBitmapDataランダム

元の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] 

この文で

if (!bitmapData && tmpSprite) 

、のBitmapData == nullのを私は何度もデバッグし、私はそれがこの方法BitmapImage.asで

mx_internal function applySource():void 
{ 

に達したときにことがわかりました。しかし、元のWebアプリケーションを実行すると、bitmapDataはnullではありません。 のBitmapData値は、今では私はそれを利用した、webアプリケーションを実行したときのようなモバイルアプリケーションを実行している誘い込むが、画像を見つけることができない、と私には思えるのコード

<s:BitmapImage id="smallTriangle" smooth="true" source="@Embed('/com/xploreplus/components/containers/panel/assets/images/smallTriangle.png')" /> 

のこの行で決定されるべきです上記のコード行がどこにあるライブラリであれ、画像を見つけることができます。

この問題は数日間私を悩ませています。これはバグだと思っています。特に時々実行されるためです。それとも私がここで紛失しているものがありますか?

+0

この問題を修正した可能性のあるHero PreviewリリースのMAXからビルドされたバグはいくつかありました。あなたは最新のヒーロービルドを試しましたか?プレリリースプログラムにサインアップすると、最新のビルドを入手できます。http://iamdeepa.com/blog/?p=85 –

+0

こんにちはsteven。私は現在、MAXのプレビュー(4.5.0.17689)ビルドを使用しています。これは、後のビルドではモバイル機能をサポートしていないため、主なヒントSDKのダウンロードページで見つけることができます。私は数日前にプレリリースプログラムにサインアップしました。このプログラムに参加すると、モバイル機能を含む最新のビルドを入手できますか?また私は一時的に私のskinclassesを削除することによって無効なビットマップデータのエラーを修正した、エラーが別の問題によってスローされたようだ。私はそれを深く掘り下げる時間がなかった。だからプログラムは今実行されますが、まだimgを表示していません – vegasaurus

+1

あなたの問題になる可能性は低いですが、無効なBitmapDataエラーが散発的に発生することがあります:1)ビットマップが大きすぎます。 2)私のアプリケーションにメモリ不足が発生したとき(BitmapDataを割り当てることは、それを端に押し出す傾向があります)3)無効なサイズのビットマップデータを新規に作成しようとするとき。私はFlexをあまり使用しませんが、BitmapImageからbitmapData変数にid "smallTriangle?"を割り当てるコードを含めてください – DoomGoober

答えて

2

これはメモリの問題であると私はほとんど確信しています。ビットマップデータコンストラクタにエラーがあるということは、アプリケーションが無効なディメンション(他のビルドで動作し、イメージがコンパイル時にフェッチされるため)でBitmapDataを作成しようとしているか、Flashメモリがなくなり、BitmapDataを作成できません(モバイルデバイスは通常、PCよりもメモリが非常に少ない)。

+0

これはtry/catchブロックの仕事かもしれません - 実行中にエラーを捕まえることができれば、何が起こっているのかをよりよく把握できます。 –