探討Flex設計理念 如何為Flex應用程序設計界面布局
本文和大家重點討論一下 FlashPlayer安全性方面的問題以及Flex設計中如何為Flex應用程序設計界面布局兩大部分內容,希望本文的介紹能讓你有所收獲。
一、關于FlashPlayer安全性方面的問題
出于安全方面的考慮,在客戶端的FlashPlayer中運行的應用程序,只有在滿足如下條件之一的情況時才能訪問遠程的數據源:
1.應用程序所編譯的SWF文件與遠程數據源位于同一個域中。
2.使用代理(proxy),并且你的SWF文件位于和代理相同的服務器上。AdobeFlexDataServices為Flex應用程序提供了一個完整的代理管理系統。同時,你還可以通過使用一種web腳本語言,如ColdFusion、JSP、PHP或者ASP來創建一個簡單的代理服務。
3.安裝crossdomain.xml(跨域策略/cross-domainpolicy)文件在數據源的宿主Web服務器上。crossdomain.xml文件允許位于其它域中的SWF文件對數據源的訪問。
二、Flex設計為Flex應用程序設計界面布局
讓我們來詳細分析一下前面那個“SayHellotoFlex“的簡單例子,你可以通過設置組件的屬性值來控制Flex應用程序的界面布局,就象如下所示:
- <?xmlversionxmlversion="1.0"encoding="utf-8"?>
- <mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"layout="absolute">
- <mx:Panellayoutmx:Panellayout="absolute"width="80%"height="80%">
- <mx:TextAreatextmx:TextAreatext="SayhellotoFlex!"top="10"bottom="70"left="10"
- right="30"/>
- <mx:Buttonlabelmx:Buttonlabel="Close"right="30"bottom="40"/>
- </mx:Panel>
- </mx:Application>
許多容器組件都允許以絕對坐標的方式創建布局,這就意義著你可以使用精確的x和y的坐標來放置組件。你還可以對應其父容器的相對位置來放置組件并約束它們,使它們在應用程序的界面放大或縮小時仍然保持其彼此的位置。
在這個例子中,面板/Panel組件的布局屬性被設置為絕對值方式,同時所有容器的大小都被設置為應用程序的百分之八十。兩個組件(TextArea和Button)被放置到距離面板容器邊界的特定象素位置上。
使用風格和主題增強視覺方面的Flex設計
如果樣式/style的屬性值沒有被指定,它們將由整個程序中運行的主題/theme來進行控制。在默認情況下,Flex應用程序使用Halo主題(就象上面那個例子那樣)。當然,你可以修改默認的主題或者干脆自己創建一個。你還可以簡單地指定新的樣式定義來改變默認的主題樣式,就象這樣:
- <?xmlversionxmlversion="1.0"encoding="utf-8"?>
- <mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"layout="absolute">
- <mx:Style>
- TextArea{
- font-size:36px;
- font-weight:bold;
- }
- </mx:Style>
- <mx:Panellayoutmx:Panellayout="absolute"width="80%"height="80%"x="122"y="24">
- <mx:TextAreatextmx:TextAreatext="SayhellotoFlex!"top="10"bottom="70"left="10"right="30"/>
- <mx:Buttonlabelmx:Buttonlabel="Close"right="30"bottom="40"/>
- </mx:Panel>
- </mx:Application>
通過明確地為TextArea組件定義一個樣式,應用程序現在看起來就會象這樣了:
在這個例子中,一種新樣式在MXML文件中的<mx:Style>標簽里進行了定義。如同我們前面所提到過的,你還可以通過修改主題或應用新主題、使用一個外部CSS文件、或者設置單獨的樣式屬性來達到設置新樣式的目的。
將一個樣式單導入到MXML文件中,你需要添加如下的代碼:
- <mx:Stylesourcemx:Stylesource="styles.css"/>
【編輯推薦】
- 解析Flexbuilder4十大新特性
- 從Flex Builder更名看Flash平臺戰略
- Flex及FlexBuilder2.0開發環境詳解
- FlexBuilder3.0與Eclipse3.4的完美結合
- 學習筆記 FlexBuilder2.0中如何使用基于Lists的控件



















