2009-07-09 10 views
2

Action Script 3を使用してFlashムービーをFlex(Flex Builder 3)に埋め込み、FlashムービーをFlexで呼び出すことができます。FlashとFlex

これは可能ですか?

+0

私はこの質問の文章は、何が問題なのかがはっきりしないので、言い換えればいいと思います。 –

答えて

2

はい可能です。フレックスアプリケーションに別のSwfを組み込みたい場合は、いくつかのオプションがあります。

オプション1 - swf、inlineをSWFLoaderコンポーネントに埋め込みます。このオプションは、swfが別のアプリケーションドメインに読み込まれるため、フレックスアプリと埋め込みコンテンツ間の通信が困難な場合があるため、いくつかのセキュリティ上の欠点があります。このコンポーネントにIDを渡して、完全なイベントを聞いてから、SWFLoaderのcontentプロパティと話して、読み込まれたswfにアクセスできるようにすることができます。ような何か:

<mx:Script> 
    <![CDATA[ 
     private function completeHandler(event : FlexEvent) : void 
     { 
      trace(mySwfLoader.content); 
     } 
    ]]> 
</mx:Script> 


<mx:SWFLoader id="mySwfLoader" source="@Embed(source='YourSwf.swf') complete='completeHandler(event)" /> 

オプション2 - あなたはクラスとしてswfファイルを埋め込むと、コード内のそのクラスのインスタンスを作成するためのメタタグを使用することができます。これは多くの柔軟性を提供しますが、宣言的にオブジェクトを追加できるというメリットが失われます。以下のような何か:

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="creationCompleteHandler(event)"> 
    <mx:Script> 
     <![CDATA[ 

      [Embed(source="mySourceSwf.swf")] 
      private var mySourceSwfClass : Class 

      private function creationCompleteHandler(event : FlexEvent) : void 
      { 
       var mySourceSwf = new mySourceSwfClass(); 

       myCanvas.addChild(mySourceSwf); 

       trace(mySourceSwf); 
      } 
     ]]> 
    </mx:Script> 
    <mx:Canvas id="myCanvas" /> 
</mx:Application> 

オプション3 - のすべてのSWFを持っていません。 FLAにUIMovieClipとして埋め込みたいものは何でも持っています。そのFLAを公開するたびに.swcファイルを作成することができます。フレックスビルダーでそのswcファイルにリンクすることができます。これにより、プロジェクト内で参照可能なMovieClipが自動的に追加されます(これは、あなたの一部でさらに調査が必要な場合があります)。あなたは両方の世界、同じアプリケーションドメイン内の宣言型マークアップとすべての利益を得るこの方法

<local:MyMovieClipInSwc id="myMovieClip" /> 

:基本的に、あなたはその後のような何かを行うことができます。この方法について私が言いたいことの1つは、アドビがUIMovieClipクラスをロイヤルにf **ケーディングしていて、それがパフォーマンスを吸うということです。どこでもこのアプリを使い始めるとアプリが極端に遅くなることに気づくだけです。

関連する問題