модульность и гибкие состояния представления

Я видел несколько похожих вопросов, но ничего похожего на то, что я пытаюсь понять, так что приступим. У меня есть гибкое приложение со многими состояниями просмотра, некоторые из которых используются часто, а некоторые - нет. В настоящее время все эти состояния находятся в одном файле mxml, поэтому в клиентском браузере создается и загружается только один файл swf. Я хотел бы разбить эти состояния представления на модули, разделив их на разные исходные файлы и просто загрузив состояния из одного файла в другой, однако я все же хочу, чтобы пользователь загружал только один файл swf. Моя основная причина для этого - избегать наличия в исходных файлах более 10 000 строк. Есть ли стандартный способ решения этой проблемы?

Спасибо.


person S.C.    schedule 24.11.2010    source источник


Ответы (1)


Есть два способа сделать то, о чем вы просите. Первое - это то, что вы спрашиваете, а второе - то, что я бы порекомендовал.

Первый:

Создайте свое приложение 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>

Второй способ, который я рекомендую из-за вашего описания приложения, разбивает его на несколько модулей 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>
person Bernesto    schedule 24.11.2010
comment
Большое спасибо. Это было очень полезно. - person S.C.; 25.11.2010