0

関連アセット10個程度の本番環境を構築しようとしています。ビジュアルなどの特定の要素は、10 個のアセット間で共有されます。Flash Builder 4 では、それぞれを独自の Pure AS3 プロジェクトとして扱っています。

各アセットには関連付けられた .fla があり、そのアセットの libs フォルダーに .swc を出力します。最終的なコンパイルは ant を介して行われ、最上位のソースは各 Flash Builder プロジェクトのメインの .as ファイルです。

特定の要素が複数のアセット間で共有されるため、ワークスペースに Flex ライブラリ プロジェクトを作成しました。このライブラリ プロジェクトには、標準構造の /src フォルダーと、私が貼り付けている /lib/ フォルダー (たとえば、greensock の TweenLite) があります。

ソース コードとサードパーティの .swc に加えて、Library プロジェクトには .swc を /lib/ フォルダーにエクスポートする FLA もあります。

ここに問題があります。関連するプロジェクトで、その .swc からのライブラリ エクスポートを確認できません。理論的には、Flex ライブラリ プロジェクトの .fla のライブラリからエクスポートするすべてのクラスは、ライブラリ プロジェクトの .swc にコンパイルする必要があります。そうではないことがわかりましたが、その理由は明らかではありません。

私は掘り下げ続けるつもりですが、他の誰かがこれらの問題に遭遇した場合に備えて、ここにこれを投げたいと思いました. 私が間違っていることを知っている人はいますか?

編集: どうやら私の greensock .swc も最終出力にコンパイルされていないようです。昨日はそうでした。何が変わったのかわからない。私の質問を要約すると、次のようになります。Flex ライブラリ プロジェクトのビルド パスに含まれる .swc ファイルに、FLP が生成する最終的な .swc にすべてのクラスが含まれていることを確認するにはどうすればよいですか?

EDIT2: 一種のひどい回避策を発見しました。現在、src フォルダーに単一のクラスを作成し、.swc のいずれかに含めたいものを宣言しています。たとえば、public var tweenLite:TweenLite、public var logo:Logo などです。ソース ファイルの 1 つで宣言すると、関連するプロジェクトでアクセスできるようになります。単独でインポートするだけでは不十分です。これは、アクセスしたいすべてのクラスを手動で宣言する必要があることを意味します。もっと良い方法があるはずです。私は何が欠けていますか?

4

1 に答える 1

1

私は、SDK swc 1 からクラス A を取得し、SDK swc 2 からクラス B を取得していたのと同じように (blendMode エラーの結果)、いくつかの問題を経験しました。 SDKのバージョン(これも面白くありません)。新しいライブラリが依存する他のすべてのライブラリのソースを含むライブラリが必要なようですね。

基本的に、各 swc は、zip に圧縮された ActionScript(AS) ファイルのカタログ ファイルと ActionScript Bytecode (ABC) であるため、これらの部分の両方を 1 つの swc にマージする必要があります。

ランタイム共有ライブラリ (RSL) を使用すると、コンパイル時に swc からバイトコードを取得して swf に含める代わりに、実行時に swc (この方法でパッケージ化された場合は swz と呼ばれます) が読み込まれます。欠点は、コンパイル時に必要な AS のバイトコードのみをプルするのではなく、すべてのクラスを swz に格納することです。したがって、RSL 経由でリンクすると、希望する結果が得られるはずですが、ライブラリから swz ファイルを生成する必要があります。(他の swcs から) swz に必要なすべてのものを参照するなど、ばかげたことをしなければならないことになるかもしれませんが、この方法で問題を解決できるはずだと思います...私は周りを見回し続けていますより良い解決策のために、私が見つけたらこれを編集します:

http://tv.adobe.com/watch/adc-presents/creating-runtime-shared-libraries/

編集1:

これも見つけました:

compc -source-path ../mycomponents/components/local -include-classes CustomCellRendererComponent -directory=true -debug=false -output ../libraries/CustomCellRenderer

このページから:

http://livedocs.adobe.com/flex/3/html/help.html?content=rsl_01.html#168690

私が周りを見回してきたので、これについてもいくつかの考えがあります.1これはスペースの点で恐ろしく非効率的です.おそらく、すべてのクラス名のプロジェクト フォルダーをトラバースする Java アプリを作成して、プロジェクト スペース内のすべてのクラスのリストを生成できるようにします。

私の考えを聞いてくれてありがとう (まだ WIP :)、

ショーン

于 2011-04-13T21:49:32.317 に答える