2009-06-09 11 views
3

私は以前作成したFlexアプリケーションの新しいバージョン "lite"を作成中です。私は、多くのクラスとコンポーネントをSWCファイルをコンパイルするFlexライブラリプロジェクトに移植しています。どちらもCairngormアプリケーションであるため、重複したコードを完全に削除することはできませんが、アイコン(PNGファイル)などの資産を共有できるはずです。これを行う最善の方法は何ですか?私はSWCにそれらを含めることを試みましたが、アプリケーションでそれらにアクセスする方法を理解できません。あなたがそれを理解するのを助けることができれば、私の質問に答えます。何かご意見は?ここで複数のFlexアプリケーション間でアセット(アイコン/イメージ)を共有する最善の方法は何ですか?

は、私は現在、私のFlexアプリケーションのアイコン/画像を埋め込む方法の例ですと:

<mx:Script> 
    <![CDATA[ 
     [Bindable] 
     [Embed(source="assets/icons/cancelIcon.png")] 
     private var cancelIcon:Class; 

     [Bindable] 
     [Embed(source="assets/icons/saveIcon.png")] 
     private var saveIcon:Class; 
    ]]> 
</mx:Script> 

感謝。

答えて

4

0)まず、上記のコードを見て - 私はいくつかのマイナーな変更をお勧めします。

// Actionscript instead of MXML: 
public class ResourceClasses 
{ 
     Bindable] 
     [Embed(source="assets/icons/cancelIcon.png")] 
     public static var CancelIconClass:Class; 

     // make your variable public and static without public no one 
     // outside the class can access AND bindable won't matter 
} 

は----さて、あなたのライブラリーをコンパイルします。お使いのアプリケーションで ----資産が適切な場所にない場合、コンパイラは

1に文句を言うだろう)、あなたはあなたがする必要があります----ライブラリプロジェクト/ SWC

を参照する必要が)この意志を

var image:Image = new Image(); 
image.source = ResourceClasses.CancelIconClass; 

// more image property setting... 

someCanvas.addChild(image); 

3:このようないくつかのコードを実行してください - あなたのアプリケーション内のライブラリプロジェクト

2)のクラスにあなたのアプリケーションにFlex Builderでのクラスから/日食をコードヒント/インテリセンスを取得することができゲットイメージを保持するためにライブラリプロジェクトを使用するなど...

*** DO注:画像を複数回読み込んで再利用する必要がある場合は、他の手順を実行して最適なものを絞り込みますパフォーマンス、等...

+0

ありがとうございます。上記のコードは、ライブラリを使用せずに画像をアプリに埋め込む方法を単純に示したものです。私はあなたの言うことを得ると思います - 私は実際にベッドで昨夜これらのラインに沿って何かを正確に考え始めました。アイコンはクラスとして保存されるので、それらをライブラリに埋め込み、URLでmyに埋め込むのではなく、クラスとして参照することができます。どのようなパフォーマンスヒントを私に与えることができますか? –

+0

悲しいことに、コメントスペースのうち編集が必要でした。
新しい質問のトピックになるかもしれませんが、REを追加することは間違いありません:Flexでのリソースとパフォーマンス)。
要するに、アドビから:http://tinyurl.com/nwe4yoとhttp://tinyurl.com/dlvjr3を参照してください - アプリケーション全体を一度にダウンさせないようにRSLでWebアプリケーションを構成する方法をチェックしてくださいユーザは待機する。
実行時のリソースを効率的に再利用するためのクールなコードレベルのテクニックもご覧ください。BitmapAssetのASDocs @ http://tinyurl.com/muy8do – Gabriel

0

のLiveDocsのこのセクションでは、あなたに興味深いものになるだろう:

http://livedocs.adobe.com/flex/3/html/help.html?content=building_overview_5.html

アセットをどのように埋め込み、結果として生じたswcでアセットを使用しようとしているかの具体的な例がありますか?あなたの問題は、swcに埋め込むか、または実際のアプリケーションでswcからそれらを使用することにあると思いますか?

+0

資産をライブラリプロジェクトに追加してSWCを構築するのに問題はありません。 SWCやSWCの他のクラスを参照することも問題ありません。 FlexアプリケーションでSWCのアセットにアクセスする方法がわかりません。 –

+0

あなたは試したことの例を挙げてもらえますか?アセットを埋め込み、それらをクラス変数に関連づけていますか?もしそうなら、最終アプリケーションでその変数を参照するだけではいけませんか?私は具体的な例が明らかにするのに役立つだろうと思っています。 –

+0

例を上記の元の質問に追加しました。 –

0

まあ、ガブリエルのアドバイス@使用して、ここで私がなってしまったものです。このように自分のアプリケーションに

package 
{ 
    [Bindable] 
    public class ResourceClasses 
    { 
     [Embed(source="assets/icons/cross.png")] 
     public static var CancelIconClass:Class; 
    } 
} 

を参照さ:

<?xml version="1.0" encoding="utf-8"?> 
<mx:Box xmlns:mx="http://www.adobe.com/2006/mxml"> 
    <mx:Button label="Cancel Changes" icon="{ResourceClasses.CancelIconClass}" /> 
</mx:Box> 

ありがとう!

+0

良いもの - キャンセルアイコンや他のイメージを再利用する必要があることがわかったらもう一度 - BitmapAssetをチェックアウトしてください。ちょっとした助けが必要な場合は、質問をしてください。 – Gabriel

+0

元 - 元の回答のコメントのパフォーマンスに関するURLをいくつか書き留めました。 – Gabriel

+0

私は混乱しています。あなたのアイコンはすべてSWCファイルのものなので、このパスはどのようなものですか? '[Embed(source =" assets/icons/cross.png ")]' mean? –

関連する問題