0

多かれ少なかれ、a) 相対パスの解決策、または b) アセットをロードする別の方法に関する洞察を探して、誰かがここで助けてくれることを願っています。

SDK 4.1 を使用するスタンドアロンの Web アプリケーションがあり、その相対アセット フォルダーを参照して、すべての画像と外部 SWFS をロードします。

サーバーでは、これはアセット ディレクトリの絶対パスです。

/ApplicationRoot/versionFldr/controls/assets/*

アプリケーションは、アセットをロードするすべてのケースで相対パスを使用します。これは、アプリのバージョンが進むにつれて、継続的に追加および更新されます。

したがって、本質的に、アプリは次のものを探しています。

assets/*

次に、新しいアプリケーションに進みます。それを「ParentApp」と呼び、上記のアプリケーションを「ChildApp」と呼びましょう。

親アプリは ChildApp とは別のサーバー ディレクトリにあります

/ParentApp/version/controls/ParentApp.swf
/ChildApp/version/controls/ChildApp.swf

現在、ChildApp が ParentApp に読み込まれると、それが常に存在していたのと同じディレクトリにあると想定されます。

/ParentApp/version/controls/assets/* != /ChildApp/version/controls/assets/*

ChildApp が ParentApp の子である場合は、読み込まれたすべてのアセットの絶対パスを参照し、スタンドアロンの場合はそれ自体に対する相対パスを参照するソリューションを見つける必要があります。

私が持っている注意点は、画像がさまざまなコントロール、キャッシュ、さらには mx:Text フィールド (タグ付きの HTML テキスト) に読み込まれることです。アプリケーション全体のすべてのパス リンクをグローバルに置き換えたり、アプリの新しいアセットが作成されたときに新しいコーディング手順を作成したりする必要がないようにしています。ChildApp は実稼働中であり、4.1 SDK にとどまる必要があります。

ParentApp は新しく、柔軟性が大幅に向上しています。

childApp で -source-path および -library-path コンパイラ オプションを試しましたが、これによりコンパイル エラーが発生し、続行できませんでした。

洞察と助けを事前にありがとう!-AJ

4

1 に答える 1

0

子アプリに「baseURL」変数を設定することで、これを解決します。使用している通常の相対URLを作成できるように、デフォルト値を指定します。 `var baseURL:String =" / Assets / ";

残念ながら、子アプリのすべてのアセットパスを変更して、アセットへのパスが次のようになるようにする必要があります。 baseURL + assetFileName

子アプリが親アプリに読み込まれるときに、このbaseURL変数に非相対パスを指定します。理想的には、子アプリがアセットを読み込もうとする前に、プロセスの早い段階でこれを行います。

于 2012-08-08T17:11:14.800 に答える