我写了一个flex(移动)应用程序,结果比我预期的要大。
我很满意我的所有课程和AS文件中的所有内容。然而,由于我使用MXML来布局我的应用程序,因此视图非常大。
我正在考虑创建我可以在我的视图上调用的外部组件,以使其更具可读性,但我不确定最佳方法是什么,或者如果这样做是最好的方式。
作为一个例子,我在视图中有一个v: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,因为这是一个动态值)
提前致谢,
答案 0 :(得分:0)
你走在正确的轨道上,Amy发布的链接有a good example如何解决它。您可能也对cairngorm and parsely感兴趣,{{3}}是用于更完整解决方案的框架/工具。
但是现在我认为只是将视图的一部分分成组件是一个好的开始。
您仍然可以在主应用中修改标签(例如):
<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>