2011-06-22 11 views
2

かなり大きなFlexアプリケーションがあり、私たちのQAはランダムではあるが再現性のあるエラーが発生していました再現する。これらのエラーのいくつかのようなフラッシュプレーヤーのデバッグバージョンからスローされていました:debug = falseでFlexがコンパイルされ、debug = trueのときにエラーが発生しないようにしました。

ReferenceError: Specified ApplicationDomain does not contain the class ::LineSeriesLegendMarker 
    at org.spicefactory.lib.reflect::ClassInfo$/getClassDefinitionByName() 
    at org.spicefactory.lib.reflect::ClassInfo$/getClassInfo() 
    at org.spicefactory.lib.reflect::ClassInfo$/forInstance() 
    at org.spicefactory.parsley.core.view.impl::DefaultViewConfigurator/getDefinitionByType() 
    at org.spicefactory.parsley.core.view.impl::DefaultViewConfigurator/getDefinition() 
    at org.spicefactory.parsley.core.view.handler::ViewAutowireHandler/processAutowireEvent() 
    at org.spicefactory.parsley.core.view.util::ContextAwareEventHandler/handleEvent() 
    at org.spicefactory.parsley.core.view.handler::ViewAutowireHandler/handleAutowireEvent() 
    at flash.events::EventDispatcher/dispatchEventFunction() 
    at flash.events::EventDispatcher/dispatchEvent() 
    at org.spicefactory.parsley.core.view.handler::ViewAutowireHandler/prefilterView() 
    at flash.display::DisplayObjectContainer/addChildAt() 
    at mx.core::UIComponent/http://www.adobe.com/2006/flex/mx/internal::$addChildAt() 
    at mx.core::Container/addChildAt() 
    at mx.core::Container/addChild() 
    at mx.charts::Legend/addLegendItem() 
    at mx.charts::Legend/populateFromArray() 
    at mx.charts::Legend/commitProperties() 
    at mx.core::UIComponent/validateProperties() 
    at mx.managers::LayoutManager/validateProperties() 
    at mx.managers::LayoutManager/doPhasedInstantiation() 
    at mx.managers::LayoutManager/doPhasedInstantiationCallback() 

その他のエラーが正しく装着されていないコンボボックスと何ちょうど一般的なタイミングの問題であると思われるが含まれています。

ここでは、mxmlcパラメータ-debug = trueと-debug = falseを除く他の変数を除いて、これをメインSWFに絞り込んだことを強調したいと思います。他の誰かがこれに遭遇したのですか、ビルドが異なる動作を起こす理由を知っていますか?

+0

「SWFLoader」を使用していますか? –

+0

このアプリケーションでModuleLoaderを使用していました。 – vershun

答えて

0

これ以上のコードを表示する必要があります。主にあなたのパセリの設定。

debug = trueとdebug = falseの違いは、debug = trueです。は、最終製品のトレースエラーではありません。あなたの開発者は常にをdebug = trueで実行し、Flash Player Debugをインストールする必要があります。

また、パースリーがなぜビューコンポーネントについて知る必要があるのか​​不思議です。 Configureタグを使用していますか?私はあなたがそれを使用せず、代わりにテスト容易性のために適切な適切なプレゼンターモデルでFastInjectを使用することをお勧めします。設定とは、Parsleyがビュー内のすべてのプロパティを反映する必要があり、無駄で時間がかかることを意味します。私はあなたの問題が消えるようにConfigureの代わりにFastInjectを使用することを保証します。つまり、コンポーネントにビューを挿入しようとしている場合を除き、そうしないといけません。そのような場合は、より良い方法でアプリケーションを設計する必要があります。

+0

ありがとうございました。 autowiringが主な問題だったようです。 autowiringを取り除き、ConfigureとFastInjectを使用することで(Parsleyのメッセージング機能を使用していたかどうかに応じて)、問題は消え去っていたようです。 デバッグコンパイラフラグがfalseのときにこのエラーが表示されるのはなぜか不思議です。 – vershun

+0

もっとコードを見ることなくコメントすることはできませんが、パセリを正しく使用していないという不機嫌な疑惑があります。 –

+0

それは間違いなくそうかもしれません。私たちはもうオートワイヤリングを使用していないので、これは本当に問題ではありませんが、好奇心が強い関係者には、Adobeの例で提供されているエリアチャートとチャートのビューを含むコンテキストを使って、親。 http://www.vershun.com/projects/flexdebugbug/Test.fxp インポート後に実行すると、エラーがスローされます。コンパイラフラグを編集してdebugをtrueに設定すると、エラーが隠されます。これまでのところ、デバッグモードでは、デバッグモードではデバッグされていないswfと同じようにスコープを尊重しません。 – vershun

関連する問題