2010-11-24 12 views
2

私はいくつかの同様の質問を見ましたが、私が理解しようとしているものと全く同じものはありません。私は多くのビューステートを持つフレックスアプリを持っていますが、そのうちのいくつかは頻繁に使用され、その中には使用されないものがあります。現在のところ、これらの状態はすべて1つのmxmlファイルに存在するため、swfファイルは1つだけ生成され、クライアントブラウザにロードされます。これらのビューステートを異なるソースファイルに分割し、あるファイルから別のファイルにステートをロードするだけで、これらのビューステートをモジュール化したいと思いますが、ユーザーは1つのswfファイルをロードするだけです。私の主な理由は、10,000行を超えるソースファイルを避けることです。この問題に対処する標準的な方法はありますか?モジュール性とフレックスビューの状態

ありがとうございました。

答えて

5

質問する方法は2通りあります。最初はあなたが聞いているように聞こえる、2番目は私がお勧めするものです。

まず:

は、あなたのmain.mxmlアプリケーションを作成し、自分の状態のそれぞれについて別々のcomponent1.mxmlとcomponent2.mxmlファイルを作成します。

<?xml version="1.0" encoding="utf-8"?> 
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
       xmlns:s="library://ns.adobe.com/flex/spark" 
       xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" xmlns:local="*"> 
    <s:states> 
     <s:State name="State1"/> 
     <s:State name="State2"/> 
    </s:states> 
    <fx:Declarations> 
     <!-- Place non-visual elements (e.g., services, value objects) here --> 
    </fx:Declarations> 

    <local:Component1 includeIn="State1"/> 
    <local:Component2 includeIn="State2"/> 
</s:Application> 

第二の方法を、およびので、アプリケーションのあなたの説明の私はお勧め1は、1つのSWFアプリケーションで複数のSWFのモジュールにそれを分解:次に、あなたのアプリケーションでこのようにそれを設定します。この方法では、ユーザーは使用する予定のものだけをダウンロードします。このシナリオでは前と同じように行いますが、コンポーネントではなくモジュールを作成します。

<?xml version="1.0" encoding="utf-8"?> 
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
       xmlns:s="library://ns.adobe.com/flex/spark" 
       xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" xmlns:local="*"> 
    <s:states> 
     <s:State name="State1"/> 
     <s:State name="State2"/> 
    </s:states> 
    <fx:Declarations> 
     <!-- Place non-visual elements (e.g., services, value objects) here --> 
    </fx:Declarations> 

    <mx:ModuleLoader url="Component1.swf" includeIn="State1"/> 
    <mx:ModuleLoader url="Component2.swf" includeIn="State2"/> 
</s:Application> 
+0

ありがとうございます。これは非常に役に立ちました。 –

関連する問題