4

Flex4SDKを使用して既存のFlex3プロジェクトをコンパイルしようとしています。このエラーが発生します:

Warning: This compilation unit did not have a factoryClass specified in Frame metadata to load the configured runtime shared libraries. To compile without runtime shared libraries either set the -static-link-runtime-shared-libraries option to true or remove the -runtime-shared-libraries option.

結果のファイルは、私の古いFlex3でコンパイルされた.swfファイルとほぼ同じです。結果の.swfファイルをFlashPlayerで再生すると、次のエラーも発生します。

An Actionscript error ocurred: VerifyError: Error #1014: Class spark.core::SpriteVisualElement could not be found

コンパイラ属性static-link-runtime-shared-librariesをtrueに設定すると、エラーは消え、すべてが正常になります。ただし、結果の.SWFのサイズは数百K大きくなります。そして、それは私が望んでいることではありません。

ランタイム共有ライブラリの概念を完全には理解していませんが、静的にリンクするオプションをtrueに設定すると、ライブラリは.swfに含まれるようです。ただし、私のプロジェクトはFlex3を使用しているように見えたので、それらを.swfから除外し、実行時に必要なライブラリのみをロードするのが好きです(ちなみにそれは知りませんでした)。

私が正しく理解していれば、playerglobal.swcは、.swfがロードする必要のある外部ライブラリに必要なすべてのコードを保持しているはずです。Flex4でコンパイルされたファイルにはさらに多くのライブラリが必要ですか?FrameメタデータタグのfactoryClassで何かをする必要がありますか?

私の質問はこれに要約されると思います:以前のFlex3でコンパイルされた.swfと同じサイズのFlex4 .swfをコンパイルするにはどうすればよいですか?

4

3 に答える 3

5

[Frame(factoryClass="path.to.your.preloader")]メイン クラス (コンパイラ オプションで設定したクラス)に追加する必要があります。

于 2010-11-25T14:09:12.340 に答える
1

Flex3はデフォルトでrslsを使用しませんでしたが、有効にすることができます。Flex4 rslsはデフォルトで有効になっています。http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7add.htmlを参照してください。

ランタイム共有ライブラリの概念は、他のアプリでも(再)使用されるアプリケーションの一部を分割することです。これにより、ユーザーは一度だけダウンロードする必要があります。これにより、最初のダウンロードでは何も保存されませんが、それ以降のダウンロードでは保存されます。独自のrslを作成することもできますが、ほとんどの場合、違いを生むことを目的としたadobeによって提供されるものです。「全員」がそれらを使用するため、必要なライブラリがユーザーのシステムにすでに存在する可能性が少しあります。アプリのダウンロード時間を短縮します。

playerglobal.swcにはフレックスフレームワーククラスが含まれていませんでした。それらのほとんどはflex.swcとframework.swcにあります(標準のフレックス3プロジェクトにはrpc.swcとutilities.swcも含まれています-チェックしませんでしたが、これらにはおそらくいくつかのフレックスパーツが含まれています同じように)

于 2010-06-20T12:03:14.913 に答える
1

プロジェクトの移行に問題があるようです。以下のプロセスを読みたいと思うかもしれません:

http://www.adobe.com/devnet/flex/articles/flexbuilder3_to_flashbuilder4.html

これは、使用する Flex4 の量に応じて、移行のさまざまな可能性を概説した非常に優れた記事です。

于 2010-06-21T11:31:51.533 に答える