2009-05-22 1 views
1

は、私が使用するSWFファイルからシンボルを抽出する前に、私は私のFlexアプリケーションにロードする単一のSWFファイルの中にグラフィックアセット(ムービークリップシンボル)の束をバンドルすることを計画します私のアプリケーションで。私の質問はこれです:私はどのようにこれをアクションスクリプトを通して行いますか?swfファイルからアセットを抽出しますか?私はミニゲームのためのFlexフレームワークを構築していたよう

ありがとうございます!

答えて

1

あなたがEMBEDを使用しないと、実行時に資産をロードしたくない場合、私はあなたがSWCとしてswfファイルをエクスポートお勧めします。

この方法では、ActionScriptからSWCファイルを閲覧することができます。別のムービークリップ内のサブムービークリップが存在することをコンパイル時に確認することができます。

あなたはコンパイル時にこれを追加することを覚えて、その後Flexコンパイラを使用している場合:

-library-path C:\path\to\your\file.swc 

あなたはFDTを使用している場合は、引数としてSWCを追加autoにオプションがあります。ここで

は、FDTでそれを行う方法についてa demoです。使用しているツールがわからない商用Flex Builderの場合は、プロセスが似ているはずです。

私はそれがあなたが探していると思います。

+0

SWCのアプローチを推薦するための+1 - 私は実際には考えていませんでした。 Webベースのアプリケーションの場合、SWFがはるかに大きくなる可能性もありますが、船に余分なSWFを持たなくてもよい場合もあります。それにもかかわらず状況に応じて、それはオプションであることを思い出させるのが良いです。 –

+0

ありがとうございます。解決策ではなく、解決策です。アセットが頻繁に変更されず、ファイルサイズが必須ではないような場合に非常に便利です(例:インタラクティブアプリ)。 変更が必要なファイルに対してSWCを使用すると同時に、ランタイムアセットを使用することを強くお勧めします。画像を変更するためだけにすべてを再コンパイルする必要はありません。 :) – ozke

+0

また、RSL(ランタイム共有ライブラリ、基本的には実行時にロードされたswc)に対してコンパイルすることもできます。そうすれば、後でswcを更新して強く型付けすることができます。 –

0

私は、ファイルAS資産/アイコンライブラリを作成しようと思います。

package 
{ 

public class IconLibrary 
{ 

    /* 
    * Framework Icons 
    */ 

    [Embed (source="../assets/fof_graphics.swf", symbol="clapperboard_icon")] 
    public static const clapperBoardIcon:Class; 
    [Embed (source="../assets/fof_graphics.swf", symbol="clapperboard_over_icon")] 
    public static const clapperBoardOverIcon:Class; 
    [Embed (source="../assets/fof_graphics.swf", symbol="close_button")] 
    public static const closeButton:Class; 
    [Embed (source="../assets/fof_graphics.swf", symbol="close_over")] 
    public static const closeOverButton:Class; 

    public function IconLibrary() 
    { 
    } 

    } 

} 

の線に沿って

何かが次にあなたがする必要があるすべては

source="{IconLibrary.clapperBoardIcon}" 

またはものは何でも表示したいアセットの名前です。

0

ロトの良いソリューションのここでは、ここにあなたが実行時にSWFをロードし、資産を抽出したい場合、あなたはあなたのローダー完全なイベントリスナーで次の操作を行うことができますための一つです:

var c:Class = Class(LoaderInfo(e.target).applicationDomain.getDefinition("myClassDefinitionName")); 

これは保存されますSWFオブジェクトのインスタンスをクラスオブジェクトとして作成することができます。

var asset:MovieClip = new c(); 
関連する問題