Как я могу разбить представление в гибком приложении? - PullRequest
0 голосов
/ 25 сентября 2011

Я написал гибкое (мобильное) приложение, которое оказалось больше, чем я ожидал.

Я очень доволен всеми своими уроками и всем, что касается моих файлов AS.Однако представление оказалось действительно большим, так как я использую MXML для разметки своего приложения.

Я думал о создании внешних компонентов, я мог бы вызвать свое представление, чтобы сделать его более читабельным, но я не уверен, чтолучший способ сделать, или если это вообще лучший способ.

В качестве примера, я имею в виду av: Group со следующим:

<s:VGroup width="100%" height="80%" includeIn="normal" horizontalAlign="center" top="70" id="imageGroup">
    <s:Label id="lblFile" visible="false" width="98%" textAlign="center" includeInLayout="true" color="0xFFFFFF"/>
    <s:BorderContainer id="framingBorder" borderColor="0xFFFFFF" borderWeight="15" cornerRadius="7">
        <s:Image id="image" source="{IMAGE_SAMPLE}" horizontalCenter="0"/>

    </s:BorderContainer>    
    <s:BorderContainer id="shareBorder" borderColor="0xFFFFFF" borderWeight="5" height="30" cornerRadius="7" width="{framingBorder.width}" visible="false" buttonMode="true" click="copyToClipboard(lblURL.text)">
        <s:layout>
            <s:HorizontalLayout verticalAlign="middle" horizontalAlign="left" gap="3"/>
        </s:layout>
        <s:Label text="url:" styleName="copyURL" />
        <s:BorderContainer borderColor="0xCDCDCD" borderWeight="1" width="{lblURL.width + 5}" height="{lblURL.height + 5}">
            <s:layout>
                <s:HorizontalLayout verticalAlign="middle" horizontalAlign="center"/>
            </s:layout>
            <s:Label id="lblURL" text="" styleName="copyURL" />
        </s:BorderContainer>
        <s:Spacer width="100%" />
        <s:HGroup>
            <s:Label color="0xFF0000" text="copy" styleName="copyURL" />
            <s:Image source="/assets/icons/page_copy_small.png" horizontalCenter="0" horizontalAlign="right"/>
        </s:HGroup>
    </s:BorderContainer>    
</s:VGroup>

Может ли кто-нибудьукажи мне правильное направление относительно того, как я могу переместить это из представления, чтобы сделать его более чистым, и как все еще иметь доступ к элементам внутри этого блока кода (то есть я все еще хотел бы иметь возможность изменять lblURL из своего представлениятак как это динамическое значение)

Заранее спасибо,

1 Ответ

0 голосов
/ 26 сентября 2011

Вы на правильном пути, и опубликованная Эми ссылка содержит хороший пример того, как ее выложить.Вы также можете быть заинтересованы в cairngorm и parsely , которые являются фреймворками / инструментами для более полного решения.

Но сейчас я думаю, что хорошее разделение частей вашего представления на компоненты - хорошее начало.

Вы все еще можете изменить ярлык в главном приложении (например):

<views:myBox id="box"  />
<s:Button click="{box.myLabel.text = 'changed'}" />

myBox.mxml:

<?xml version="1.0" encoding="utf-8"?>
<s:BorderContainer xmlns:fx="http://ns.adobe.com/mxml/2009" 
                   xmlns:s="library://ns.adobe.com/flex/spark" 
                   xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300">
    <s:Label id="myLabel" text="this is my label" />
</s:BorderContainer>
...