【发布时间】:2011-09-26 19:37:48
【问题描述】:
我编写了一个 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,因为这是一个动态值)
提前致谢,
【问题讨论】:
-
您的项目中是否有其他地方看起来像一个或多个部分,或者您在组件中是否有重复?
-
就是这样。对于这样的事情没有。这就是为什么我不确定将它们变成组件的原因,因为它们只会被使用一次
-
你没有说这里是否有任何逻辑可以编辑模型。一件总能让你受益的事情是使用演示模型 (blogs.adobe.com/paulw/archives/2007/10/presentation_pa_3.html) 将逻辑部分分开。这样,如果您需要更改 View 的外观或在不同外观的 View 中执行相同的操作(例如,在不同的设备上),您不必复制逻辑。如果您喜欢 TDD,它也很容易测试。
标签: actionscript-3 apache-flex air flex4.5