Flex 快速指南

2018-01-01 17:55 更新

Flex - 概述

什么是Flex?

  • Flex是一個強大的開源應用程序框架,允許使用相同的編程模型,工具和代碼庫構建針對瀏覽器,移動設備和桌面的傳統(tǒng)應用程序。

  • Flex提供由Flex類庫(ActionScript類),F(xiàn)lex編譯器,調試器,MXML和ActionScript編程語言組成的FLEX SDK以及其他實用程序,以構建富有表現(xiàn)力和交互性的富互聯(lián)網(wǎng)應用程序(RIA)

  • Flex負責Web應用程序的用戶界面(UI)或客戶端功能。 服務器端功能取決于使用傳統(tǒng)腳本語言(Java / PHP等)編寫的服務器端組件,

  • 基于Flex的應用程序實際上是作為SWF文件提供的,它非常類似于傳統(tǒng)Web應用程序的HTML / Javascript部分。

  • Flex應用程序作為SWF文件以及HTML包裝器,CSS文件和任何服務器端腳本文件(即Java,.CFM,.PHP等)部署到服務器。 像傳統(tǒng)的Web應用程序

  • 這些資源使用常規(guī)的HTTP請求/響應方式從服務器傳遞到客戶端瀏覽器,F(xiàn)lash Player在瀏覽器中運行應用程序。

Flex的優(yōu)點

  • 基于Flash Player的Flex應用程序可以訪問設備功能,如GPS,攝像頭,本地數(shù)據(jù)庫,圖形加速度計。

  • Flex應用程序可以在Android,BlackBerry Tablet OS,iOS設備上運行。

  • Flex應用程序可以在瀏覽器以及桌面上運行。

  • Flex應用程序與平臺無關。 UI可以是平臺本地的或者可以在每個平臺上相同。

  • Flex應用程序可以使用行業(yè)標準(如REST,SOAP,JSON,JMS和AMF)與所有主要服務器端技術(如Java,Spring,Hibernate,PHP,Ruby,.NET,Adobe ColdFusion和SAP)

  • Flex應用程序開發(fā)通過與應用程序直觀交互,在視覺更豐富的界面中呈現(xiàn)信息,確保豐富的用戶體驗。

  • Flex應用程序是單頁應用程序,其中狀態(tài)可以從一個狀態(tài)轉換到其他狀態(tài),而無需從服務器獲取新頁面或刷新瀏覽器。

  • Flex應用程序在很大程度上減少了服務器上的負載,因為它只需要返回一次應用程序,而不是每當用戶更改視圖時返回一個新頁面。

Flex的缺點

  • Flex應用程序是單線程應用程序,但Flex提供了異步編程模型以減輕此問題。

  • Flex是基于actionscript和XML的。 學習這兩個是Flex必須工作的。

Flex - 環(huán)境設置

本教程將指導您如何準備開發(fā)環(huán)境以開始使用Adobe Flex Framework工作。 本教程還將教您如何在設置Flex框架之前在您的機器上安裝JDK和Adobe Flash Builder:

系統(tǒng)要求

FLEX需要JDK 1.4或更高版本,所以第一個要求是在您的計算機上安裝JDK。

JDK1.4或以上。
內存沒有最低要求。
磁盤空間沒有最低要求。
操作系統(tǒng)沒有最低要求。

按照給定的步驟設置您的環(huán)境以開始Flex應用程序開發(fā)。

步驟1 - 驗證計算機上的Java安裝

現(xiàn)在打開控制臺并執(zhí)行以下 java 命令。

操作系統(tǒng)任務命令
Windows打開命令控制臺c:\> java -version
Linux打開命令終端$ java -version
Mac打開終端機器:?joseph $ java -version

讓我們驗證所有操作系統(tǒng)的輸出:

操作系統(tǒng)生成輸出
Windows

java版本“1.6.0_21"

Java(TM)SE運行時環(huán)境(build 1.6.0_21-b07)

Java HotSpot(TM)客戶端VM(構建17.0-b17,混合模式,共享)

Linux

java版本“1.6.0_21"

Java(TM)SE運行時環(huán)境(build 1.6.0_21-b07)

Java HotSpot(TM)客戶端VM(構建17.0-b17,混合模式,共享)

Mac

java版本“1.6.0_21"

Java(TM)SE運行時環(huán)境(build 1.6.0_21-b07)

Java HotSpot(TM)64位服務器VM(構建17.0-b17,混合模式,共享)

步驟2 - 安裝Java開發(fā)工具包(JDK):

如果沒有安裝Java,那么您可以從Oracle的Java站點安裝Java軟件開發(fā)工具包(SDK):Java SE Downloads下載。 您將在下載的文件中找到安裝JDK的說明,按照給定的說明安裝和配置設置。 最后設置PATH和JAVA_HOME環(huán)境變量來引用包含java和javac的目錄,通常分別是java_install_dir / bin和java_install_dir。

JAVA_HOME 環(huán)境變量設置為指向計算機上安裝Java的基本目錄位置。 例如

操作系統(tǒng)輸出
Windows將環(huán)境變量JAVA_HOME設置為C:\\ Program Files \\ Java \\ jdk1.6.0_21
Linuxexport JAVA_HOME = / usr / local / java-current
Macexport JAVA_HOME = / Library / Java / Home

將Java編譯器位置附加到系統(tǒng)路徑。

操作系統(tǒng)輸出
Windows將字符串%JAVA_HOME%\\ bin附加到系統(tǒng)變量Path的末尾。
Linuxexport PATH = $ PATH:$ JAVA_HOME / bin /
Mac不需要

步驟3 - 設置Adobe Flash Builder 4.5

本教程中的所有示例都是使用Adobe Flash Builder 4.5 Profession IDE試用版編寫的。 所以我建議您應該有最新版本的Adobe Flash Builder在您的操作系統(tǒng)上安裝在您的機器上。

要安裝Adobe Flash Builder IDE,請從http://www.adobe.com/in/products/flash-builder.html下載安裝后,將二進制分發(fā)包解壓到方便的位置。 例如在Windows上的C:\\ flash-builder,或Linux / Unix上的/ usr / local / flash-builder,最后恰當?shù)卦O置PATH變量。

Flash Builder可以通過在Windows機器上執(zhí)行以下命令來啟動,也可以直接雙擊FlashBuilder.exe

 %C:\flash-builder\FlashBuilder.exe

可以通過在Unix(Solaris,Linux等)機器上執(zhí)行以下命令來啟動Flash Builder:

$/usr/local/flash-builder/FlashBuilder

Adobe Flash Builder試用版可以使用60天。 只接受條款和條件,并跳過初始注冊步驟,并繼續(xù)使用IDE。 我們正在使用試用版的教學目的。

成功啟動后,如果一切都很好,那么它應該顯示以下結果:

FlashBuilder Home page

Adobe Flash Builder預先配置了FLEX SDK。 我們在我們的示例中使用了FLEX SDK 4.5,這些示例隨Adobe Flash Builder 4.5一起提供。

步驟4:設置Apache Tomcat:

您可以從http://tomcat.apache.org/下載最新版本的Tomcat 。 下載安裝后,將二進制分發(fā)包解壓到方便的位置。 例如在Windows上的C:\\ apache-tomcat-6.0.33或Linux / Unix上的/usr/local/apache-tomcat-6.0.33,并設置指向安裝位置的CATALINA_HOME環(huán)境變量。

Tomcat可以通過在Windows機器上執(zhí)行以下命令來啟動,也可以直接雙擊startup.bat

 %CATALINA_HOME%\bin\startup.bat
 
 or
 
 C:\apache-tomcat-6.0.33\bin\startup.bat

Tomcat可以通過在Unix(Solaris,Linux等)機器上執(zhí)行以下命令來啟動:

$CATALINA_HOME/bin/startup.sh
 
or
 
/usr/local/apache-tomcat-6.0.33/bin/startup.sh

成功啟動后,Tomcat中包含的默認Web應用程序將通過訪問 http:// localhost:8080 / 獲得。 如果一切都很好,那么它應該顯示以下結果:

Tomcat Home page

有關配置和運行Tomcat的更多信息,請參見此處包含的文檔以及Tomcat網(wǎng)站:http://tomcat.apache.org

可以通過在Windows機器上執(zhí)行以下命令來停止Tomcat:

%CATALINA_HOME%\bin\shutdown

or

C:\apache-tomcat-5.5.29\bin\shutdown

通過在Unix(Solaris,Linux等)機器上執(zhí)行以下命令,可以停止Tomcat:

$CATALINA_HOME/bin/shutdown.sh

or

/usr/local/apache-tomcat-5.5.29/bin/shutdown.sh

Flex - 環(huán)境設置...

在開始使用Flash Builder創(chuàng)建實際的 HelloWorld 應用程序之前,讓我們看看Flex應用程序的實際部分。 Flex應用程序包括以下四個重要部分,其中最后一部分是可選的,但前三個部分是強制性的:

  • Flex框架庫

  • 客戶端代碼

  • 公共資源(HTML / JS / CSS)

  • 服務器端代碼

典型Flex應用程序 HelloWord 的不同部分的示例位置如下所示:

名稱位置
項目根HelloWorld/
Flex框架庫構建路徑
公共資源html-template
客戶端代碼table table-bordered / com / tutorialspoint / client
服務器端代碼table table-bordered / com / tutorialspoint / server

應用程序構建過程

Flex應用程序需要Flex框架庫。 Flash Builder自動將庫添加到構建路徑。

當我們使用Flash Builder構建代碼時,F(xiàn)lash Builder將執(zhí)行以下任務

  • 將源代碼編譯為HelloWorld.swf文件。

  • 從存儲在html-template文件夾中的文件index.template.html編譯HelloWorld.html(用于swf文件的包裝文件)

  • 復制目標文件夾中的HelloWorld.swf和HelloWorld.html文件,bin-debug。

  • 復制swfobject.js,一個javascript代碼負責在目標文件夾中的HelloWorld.html中動態(tài)加載swf文件,bin-debug

  • 以目標文件夾中的名為frameworks_xxx.swf的swf文件的形式復制框架庫,bin-debug

  • 在目標文件夾中復制其他flex模塊(.swf文件,如sparkskins_xxx.swf,textLayout_xxx.swf)。

Flex Architecture

應用程序啟動過程

  • 在任何Web瀏覽器中打開\\ HelloWorld \\ bin-debug文件夾中的HelloWorld.html文件。

  • HelloWorld.swf將自動加載,應用程序將開始運行。

Flex框架庫

以下是幾個重要框架庫的簡要細節(jié)。

在flex庫中使用.swc表示法表示

S.N.節(jié)點和描述
1

playerglobal.swc

此庫專用于安裝在計算機上的Flash Player,并包含F(xiàn)lash Player支持的本機方法。

2

textlayout.swc

此庫支持文本布局相關功能。

3

framework.swc

這是flex框架庫包含F(xiàn)lex的核心特性。

4

mx.swc

此庫存儲mx UI控件的定義。

5

charts.swc

此庫支持圖表控件。

6

spark.swc

此庫存儲spark UI控件的定義。

7

sparkskins.swc

這個庫支持spark UI控件的換膚。

客戶端代碼

Flex application code can be written in MXML and ActionScript.
S.N.類型和描述
1

MXML

MXML是一種XML標記語言,我們將用它來布置用戶界面組件.MXML在構建過程中被編譯為ActionScript。

2

ActionScript

ActionScript是一種面向對象的過程化編程語言,基于ECMAScript(ECMA-262)第4版草案語言規(guī)范。

In Flex, we can mix ActionScript and MXML, to do the following:
  • 使用MXML標記布置用戶界面組件

  • 使用MXML聲明性地定義應用程序的非可視化方面,例如訪問服務器上的數(shù)據(jù)源

  • 使用MXML在服務器上的用戶界面組件和數(shù)據(jù)源之間創(chuàng)建數(shù)據(jù)綁定。

  • 使用ActionScript在MXML事件屬性中定義事件偵聽器。

  • 使用< mx:Script>添加腳本塊 標簽。

  • 包括外部ActionScript文件。

  • 導入ActionScript類。

  • 創(chuàng)建ActionScript組件。

公共資源

這些是Flex應用程序引用的輔助文件,例如位于html-template文件夾下的Host HTML頁面,CSS或圖像。它包含以下文件

S.N.文件名和描述
1

index.template.html

主機HTML頁面,包含占位符。 Flash Builder使用此模板來使用HelloWorld.swf文件構建實際頁面HelloWorld.html。

2

playerProductInstall.swf

這是一個Flash實用程序,用于以快速模式安裝Flash Player。

3

swfobject.js

這是javascript負責檢查安裝的Flash Player的版本,并在HelloWorld.html頁面中加載HelloWorld.swf。

4

html-template / history

此文件夾包含用于應用程序的歷史記錄管理的資源。

HelloWorld.mxml

這是實際寫入的MXML / AS(ActionScript)代碼,實現(xiàn)應用程序的業(yè)務邏輯,并且Flex編譯器轉換為SWF文件,將由瀏覽器中的Flash播放器執(zhí)行。示例HelloWorld Entry類將如下所示:

<?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"
   width="100%" height="100%"
   minWidth="500" minHeight="500" 
   initialize="application_initializeHandler(event)">

   <fx:Script>
      <![CDATA[
         import mx.controls.Alert;
         import mx.events.FlexEvent;
         protected function btnClickMe_clickHandler(event:MouseEvent):void
         {
            Alert.show("Hello World!");				
         }

         protected function application_initializeHandler(event:FlexEvent):void
         {
            lblHeader.text = "My Hello World Application";				
         }
      ]]>
   </fx:Script>
   <s:VGroup horizontalAlign="center" width="100%" height="100%" 
   paddingTop="100" gap="50">
      <s:Label id="lblHeader" fontSize="40" color="0x777777"/>
      <s:Button label="Click Me!" id="btnClickMe" 
      click="btnClickMe_clickHandler(event)" />
   </s:VGroup>	
</s:Application>

下表給出了上述代碼腳本中使用的所有標簽的描述。

S.N.節(jié)點和描述
1

應用程序

定義始終為Flex應用程序的根標記的應用程序容器。

2

腳本

包含ActionScript語言中的業(yè)務邏輯。

3

VGroup

定義可以垂直方式包含F(xiàn)lex UI控件的垂直分組容器。

4

標簽

表示Label控件,一個顯示文本的非常簡單的用戶界面組件。

5

按鈕

表示Button控件,可以單擊它來執(zhí)行某些操作。

服務器端代碼

這是應用程序的服務器端部分,非??蛇x。 如果您不在應用程序中執(zhí)行任何后端處理,則您不需要此部分,但如果后端需要一些處理,并且您的客戶端應用程序與服務器交互,那么您將必須開發(fā)這些組件。

下一章將使用所有上述概念,使用Flash Builder創(chuàng)建Hello World應用程序。

Flex - 創(chuàng)建應用程序

我們將使用Flash Builder 4.5創(chuàng)建Flex應用程序。 讓我們從一個簡單的 HelloWorld 應用程序開始:

步驟1 - 創(chuàng)建項目

第一步是使用Flash Builder IDE創(chuàng)建一個簡單的Flex項目。 使用選項File > New > Flex Project。 現(xiàn)在,使用向導窗口將您的項目命名為 HelloWorld ,如下所示:

Create Flex Project Wizard

如果未選擇,請選擇應用程序類型 Web(在Adobe Flash Player中運行),并保留其他默認值,然后單擊完成按鈕。 項目創(chuàng)建成功后,您的項目資源管理器中將包含以下內容:

Flex Project Structure

以下是所有重要文件夾的簡要說明:

位置
表格邊框
  • 源代碼(mxml / as classes)文件。

  • 我們已經(jīng)創(chuàng)建了com / tutorialspoint / client文件夾結構,其中包含客戶端特定的,負責客戶端UI顯示的java類。

bin-debug
  • 這是輸出部分,它表示實際可部署的Web應用程序。

  • history文件夾包含F(xiàn)lex應用程序的歷史記錄管理的支持文件。

  • framework_xxx.swf,flex應用程序使用的flex框架文件。

  • HelloWorld.html,用于flex應用程序的wrapper / host HTML文件。

  • HelloWorld.swf,我們的基于flex的應用程序。

  • playerProductInstall.swf,flash player express安裝程序。

  • spark_xxx.swf,用于spark組件支持的庫。

  • swfobject.js,javascript負責在HelloWorld.html中加載HelloWorld.swf。 它檢查Flash Player版本并將初始化參數(shù)傳遞給HelloWorld.swf文件。

  • textLayout_xxx.swf,用于文本組件支持的庫。

html-template
  • 這表示可配置的Web應用程序。 Flash Builder將文件從html-template編譯到bin-debug文件夾。

  • history文件夾包含F(xiàn)lex應用程序的歷史記錄管理的支持文件。

  • index.template.html,wrapper / host用于具有用于Flash Builder特定配置的占位符的flex應用程序的HTML文件。 在編譯期間在bin-debug文件夾中編譯為HelloWorld.html。

  • playerProductInstall.swf,flash player express安裝程序。在構建期間復制到bin-debug文件夾。

  • swfobject.js,javascript負責在HelloWorld.html中加載HelloWorld.swf。 它檢查flash播放器版本,并將初始化參數(shù)傳遞給HelloWorld.swf文件。在構建期間復制到bin-debug文件夾。

步驟2 - 創(chuàng)建外部CSS文件

html-template 文件夾中為Wrapper HTML頁面創(chuàng)建CSS文件 styles.css 。

html, body  { 
   height:100%;
}
body { 
   margin:0; 
   padding:0; 
   overflow:auto; 
   text-align:center;		
}   
object:focus { 
   outline:none; 
}
#flashContent { 
   display:none;	
}

.pluginHeader {
   font-family:Arial, Helvetica, sans-serif;
   font-size:14px;
   color:#9b1204;
   text-decoration:none;
   font-weight:bold;
}

.pluginInstallText {
   font-family:Arial, Helvetica, sans-serif;
   font-size:12px;
   color:#000000;
   line-height:18px;
   font-style:normal;
}

.pluginText { 
   font-family:Arial, Helvetica, sans-serif;
   font-size:12px;
   color:#000000;
   line-height:18px;
   font-style:normal;
}

步驟3 - 修改包裝HTML頁面模板

html-template 文件夾中修改封裝HTML頁面模板 index.template.html 。 Flash Builder將創(chuàng)建一個默認的Wrapper HTML網(wǎng)頁模板 html-template / index.template.html ,它將被編譯為HelloWorld.html。 此文件包含F(xiàn)lash Builder在編譯過程中替換的占位符,例如Flash Player版本,應用程序名稱等。

讓我們修改此文件以顯示自定義消息,如果沒有安裝flash插件。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> 
<head>
<title>${title}</title>
<meta name="google" value="notranslate" />         
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="styles.css" type="text/css"></link>       
<link rel="stylesheet" type="text/css" href="history/history.css" />
<script type="text/javascript" table table-bordered="history/history.js"></script>
<script type="text/javascript" table table-bordered="swfobject.js"></script>
<script type="text/javascript">
   // For version detection, set to min. required Flash Player version,
   //or 0 (or 0.0.0), for no version detection. 
   var swfVersionStr = "${version_major}.${version_minor}.${version_revision}";
   // To use express install, set to playerProductInstall.swf, 
   //otherwise the empty string. 
   var xiSwfUrlStr = "${expressInstallSwf}";
   var flashvars = {};
   var params = {};
   params.quality = "high";
   params.bgcolor = "${bgcolor}";
   params.allowscriptaccess = "sameDomain";
   params.allowfullscreen = "true";
   var attributes = {};
   attributes.id = "${application}";
   attributes.name = "${application}";
   attributes.align = "middle";
   swfobject.embedSWF(
   "${swf}.swf", "flashContent", 
   "${width}", "${height}", 
   swfVersionStr, xiSwfUrlStr, 
   flashvars, params, attributes);
   // JavaScript enabled so display the flashContent div in case 
   //it is not replaced with a swf object.
   swfobject.createCSS("#flashContent", "display:block;text-align:left;");
</script>
</head>
<body>        
<div id="flashContent">
   <p style="margin:100px;">
   <table  width="700" cellpadding="10" cellspacing="2" border="0">
      <tr><td class="pluginHeader">Flash Player Required</td></tr>		  	
      <tr><td class="pluginText">The Adobe Flash Player version 
      10.2.0 or greater is required.</td></tr>			
      <tr><td class = "pluginInstallText" align="left">
         <table border="0" width="100%">
         <tr class = "pluginInstallText" >									
         <td>Click here to download and install Adobe Flash Player:</td>													
         <td> </td>
         <td align="right">	<script type="text/javascript"> 
         var pageHost 
         =((document.location.protocol == "https:") ? "https://" : "http://"); 
         document.write("<a target='_blank'"
         +" href='http://get.adobe.com/flashplayer/'><"
         +"img style='border-style: none' table table-bordered='" 
         +pageHost 
         +"www.adobe.com/images/shared/download_buttons/get_flash_player.gif'"
         +" alt='Get Adobe Flash player' /></a>" ); 
         </script> 
         </td>
         </tr>
         </table>
         </td>	
      </tr>
   </table>                
   </p>          
</div>
<noscript>
   <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" 
   width="${width}" height="${height}" id="${application}">
   <param name="movie" value="${swf}.swf" />
   <param name="quality" value="high" />
   <param name="bgcolor" value="${bgcolor}" />
   <param name="allowScriptAccess" value="sameDomain" />
   <param name="allowFullScreen" value="true" />
   <!--[if !IE]>-->
   <object type="application/x-shockwave-flash" data="${swf}.swf" 
   width="${width}" height="${height}">
   <param name="quality" value="high" />
   <param name="bgcolor" value="${bgcolor}" />
   <param name="allowScriptAccess" value="sameDomain" />
   <param name="allowFullScreen" value="true" />
   <!--<![endif]-->
   <!--[if gte IE 6]>-->
   <p> 
      <p style="margin:100px;">
      <table  width="700" cellpadding="10" cellspacing="2" border="0">
      <tr><td class="pluginHeader">Flash Player Required</td></tr>		  	
      <tr><td class="pluginText">The Adobe Flash Player version 
      10.2.0 or greater is required.</td></tr>			
      <tr><td class = "pluginInstallText" align="left">
         <table border="0" width="100%">
         <tr class = "pluginInstallText" >									
         <td>Click here to download and install Adobe Flash Player:</td>													
         <td> </td>
         <td align="right">	<script type="text/javascript"> 
         var pageHost 
         = ((document.location.protocol == "https:") ? "https://" : "http://"); 
         document.write("<a target='_blank'"
         +" href='http://get.adobe.com/flashplayer/'><"
         +"img style='border-style: none' table table-bordered='" 
         +pageHost 
         +"www.adobe.com/images/shared/download_buttons/get_flash_player.gif'"
         +" alt='Get Adobe Flash player' /></a>" ); 
         </script> 
         </td>
         </tr>
         </table>
         </td>	
      </tr>
   </table>                
   </p>             
   </p>
   <!--<![endif]-->
     <p style="margin:100px;">
      <table  width="700" cellpadding="10" cellspacing="2" border="0">
      <tr><td class="pluginHeader">Flash Player Required</td></tr>		  	
      <tr><td class="pluginText">The Adobe Flash Player version 
      10.2.0 or greater is required.</td></tr>			
      <tr><td class = "pluginInstallText" align="left">
         <table border="0" width="100%">
         <tr class = "pluginInstallText" >									
         <td>Click here to download and install Adobe Flash Player:</td>													
         <td> </td>
         <td align="right">	<script type="text/javascript"> 
         var pageHost 
         = ((document.location.protocol == "https:") ? "https://" : "http://"); 
         document.write("<a target='_blank'"
         +" href='http://get.adobe.com/flashplayer/'><"
         +"img style='border-style: none' table table-bordered='" 
         +pageHost 
         +"www.adobe.com/images/shared/download_buttons/get_flash_player.gif'"
         +" alt='Get Adobe Flash player' /></a>" ); 
         </script> 
         </td>
         </tr>
         </table>
         </td>	
      </tr>
   </table>                
   </p>          
   <!--[if !IE]>-->
   </object>
   <!--<![endif]-->
   </object>
</noscript>     
</body>
</html>

步驟4 - 創(chuàng)建內部CSS文件

table table-bordered / com / tutorialspoint 文件夾中為 HelloWorld.mxml 創(chuàng)建CSS文件 Style.css 。 Flex為其UI控件提供了類似的CSS樣式,因為有HTML UI控件的CSS樣式。

/* CSS file */
@namespace s "library://ns.adobe.com/flex/spark";
@namespace mx "library://ns.adobe.com/flex/mx";

.heading
{
   fontFamily: Arial, Helvetica, sans-serif;
   fontSize: 17px;
   color: #9b1204;
   textDecoration:none;
   fontWeight:normal;
}

.button {
   fontWeight: bold;			
}

.container {
   cornerRadius :10;
   horizontalCenter :0;	
   borderColor: #777777;
   verticalCenter:0;
   backgroundColor: #efefef;
}

步驟5 - 修改入口級類

Flash Builder將創(chuàng)建一個默認的mxml文件 table table-bordered / com.tutorialspoint / HelloWorld.mxml ,其具有根標簽< application> 容器的應用程序。 讓我們修改這個文件顯示“Hello,World!":

<?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"
   width="100%" height="100%"
   minWidth="500" minHeight="500" 
   initialize="application_initializeHandler(event)">
   <fx:Style source="/com/tutorialspoint/client/Style.css"/>
   <fx:Script>
      <![CDATA[
       import mx.controls.Alert;
       import mx.events.FlexEvent;
       protected function btnClickMe_clickHandler(event:MouseEvent):void
       {
          Alert.show("Hello World!");				
       }

       protected function application_initializeHandler(event:FlexEvent):void
       {
          lblHeader.text = "My Hello World Application";				
       }
      ]]>
   </fx:Script>
   <s:BorderContainer width="500" height="500" id="mainContainer" 
      styleName="container">
      <s:VGroup width="100%" height="100%" gap="50" horizontalAlign="center" 
         verticalAlign="middle">
         <s:Label id="lblHeader" fontSize="40" color="0x777777" 
            styleName="heading"/>
         <s:Button label="Click Me!" id="btnClickMe" 
            click="btnClickMe_clickHandler(event)" styleName="button" />
      </s:VGroup>	
   </s:BorderContainer>	
</s:Application>

您可以在同一源目錄中創(chuàng)建更多的mxml或actionscript文件,以定義新應用程序或定義輔助程序。

步驟6 - 構建應用程序

Flash Builder默認已選中自動構建 只要檢查問題查看是否有任何錯誤。 完成更改后,您將看不到任何錯誤。

步驟7 - 運行應用程序

現(xiàn)在點擊調試應用程序菜單并選擇 HelloWorld 應用程序來調試應用程序。


如果一切正常,應用程序將在瀏覽器中啟動,您將在Flash Builder控制臺中看到以下調試日志

[SWF] \HelloWorld\bin-debug\HelloWorld.swf 
- 181,509 bytes after decompression
[SWF] \HelloWorld\bin-debug\HelloWorld.swf\[[DYNAMIC]]\1 
- 763,122 bytes after decompression
[SWF] \HelloWorld\bin-debug\HelloWorld.swf\[[DYNAMIC]]\2 
- 1,221,837 bytes after decompression
[SWF] \HelloWorld\bin-debug\HelloWorld.swf\[[DYNAMIC]]\3 
- 1,136,788 bytes after decompression
[SWF] \HelloWorld\bin-debug\HelloWorld.swf\[[DYNAMIC]]\4 
- 2,019,570 bytes after decompression
[SWF] \HelloWorld\bin-debug\HelloWorld.swf\[[DYNAMIC]]\5 
- 318,334 bytes after decompression

應用程序啟動后,您將看到對Flash Builder斷點的關注,因為我們已將斷點放在application_initializeHandler方法的第一行。

Flex Debug Application

你可以看到被掛起的線程的stacktrace。

Flex Debug Stacktrace

您可以查看表達式的值。

Flex Debug Expressions

你可以看到放置的斷點列表。

Flex Debug Breakpoints

現(xiàn)在繼續(xù)按F6,直到到達application_initializeHandler()方法的最后一行。 作為功能鍵的參考,F(xiàn)6逐行檢查代碼,F(xiàn)5進一步向內,F(xiàn)8將恢復應用程序。 現(xiàn)在你可以看到application_initializeHandler()方法的所有變量的值的列表。

Flex Debug Variables

現(xiàn)在你可以看到flex代碼可以調試與Java應用程序可以調試相同的方式。 將斷點放置到任何行,并使用flex的調試功能。

Flex - 國際化

Flex provides two ways to internationalize a Flex application, We'll demonstrate use of Compile time Internationalization being most commonly used among projects.
技術描述
編譯時間國際化這種技術是最普遍的,并且在運行時需要非常少的開銷; 是一種用于翻譯常量和參數(shù)化字符串的非常有效的技術;最簡單的實現(xiàn)。 編譯時國際化使用標準屬性文件來存儲翻譯的字符串和參數(shù)化消息,這些屬性文件直接在應用程序中編譯。
運行時國際化這種技術非常靈活,但比靜態(tài)字符串國際化慢。 您需要單獨編譯本地化屬性文件,將它們保留在應用程序外部,并在運行時加載它們。

使Flex應用程序國際化的工作流程

步驟1:創(chuàng)建文件夾結構

在Flex項目的src文件夾下創(chuàng)建一個locale文件夾。這將是應用程序將支持的語言環(huán)境的所有屬性文件的父目錄。 在區(qū)域設置文件夾中,創(chuàng)建子文件夾,每個應用程序的區(qū)域設置支持一個。 命名語言環(huán)境的約定是

{language}_{country code}

例如,en_US表示美國的英語。 區(qū)域設置de_DE表示德語。 示例應用程序將支持兩種常用語言:英語和德語

步驟2:創(chuàng)建屬性文件

創(chuàng)建包含要在應用程序中使用的消息的屬性文件。 我們在 src locale > en_US下創(chuàng)建了一個 HelloWorldMessages.properties 文件

enterName=Enter your name
clickMe=Click Me
applicationTitle=Application Internationalization Demonstration
greeting=Hello {0}

創(chuàng)建包含特定于語言環(huán)境的翻譯值的屬性文件。 我們在src locale > de_DE下創(chuàng)建了一個 HelloWorldMessages.properties 文件。 此文件包含德語的翻譯。 _de指定德語區(qū)域設置,我們將在我們的應用程序中支持德語。

如果要使用Flash Builder創(chuàng)建屬性文件,請將文件的編碼更改為UTF-8。選擇該文件,然后右鍵單擊以打開其屬性窗口。選擇文本文件編碼為其他UTF-8。 應用并保存更改。

enterName=Geben Sie Ihren Namen
clickMe=Klick mich
applicationTitle=Anwendung Internationalisierung Demonstration
greeting=Hallo {0}

步驟3:指定編譯器選項

  • 右鍵單擊項目并選擇屬性。

  • 選擇Flex編譯器,并將以下內容添加到“其他編譯器參數(shù)"設置中:

-locale en_US de_DE
  • 右鍵單擊項目并選擇屬性。

  • 選擇Flex構建路徑,然后將以下內容添加到源路徑設置:

src\locale\{locale}

內部化示例

現(xiàn)在讓我們按照以下步驟來測試Flex應用程序中的內部化技術:

步步驟描述
1 Flex - 創(chuàng)建應用程序章節(jié)中所述,在包 com.tutorialspoint.client 下創(chuàng)建名為 HelloWorld 的項目。
2修改 HelloWorld.mxml ,如下所述。 保持文件的其余部分不變。
3編譯并運行應用程序,以確保業(yè)務邏輯按照要求工作。

以下是修改后的mxml文件 src / com.tutorialspoint / HelloWorld.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="500" minHeight="500">
   <fx:Metadata>
      [ResourceBundle("HelloWorldMessages")]
   </fx:Metadata> 
   <fx:Style source="/com/tutorialspoint/client/Style.css"/>
   <fx:Script>
      <![CDATA[
         import mx.controls.Alert;
         [Bindable]
         private var locales:Array = [{label:"English", locale:"en_US"},
            {label:"German", locale:"de_DE"}];

         private function comboChangeHandler():void
         {
           resourceManager.localeChain = [localeComboBox.selectedItem.locale];
         }

         protected function clickMe_clickHandler(event:MouseEvent):void
         {
            var name:String = txtName.text;
            var inputArray:Array = new Array();
            inputArray.push(name);
            Alert.show(resourceManager.getString('HelloWorldMessages'
            ,'greeting',inputArray));
         }
      ]]>
   </fx:Script>
   <s:BorderContainer width="500" height="500" id="mainContainer" 
      styleName="container">
      <s:VGroup width="100%" height="100%" gap="50" 
	  horizontalAlign="center" verticalAlign="middle">
         <s:Label id="lblHeader" fontSize="40" 
            color="0x777777" 
            text ="{resourceManager.getString('HelloWorldMessages'
            ,'applicationTitle')}"
            styleName="heading" width="90%" height="150"/>
         <s:Panel width="300" height="150">
            <s:layout>
               <s:VerticalLayout paddingTop="10" paddingLeft="10" />
            </s:layout>
            <s:HGroup >
               <s:Label 
               text="{resourceManager.getString('HelloWorldMessages'
               ,'enterName')}" 
               paddingTop="2"/>			
               <s:TextInput id="txtName"/>
            </s:HGroup>
            <s:Button 
            label="{resourceManager.getString('HelloWorldMessages','clickMe')}" 
            click="clickMe_clickHandler(event)" right="10" />	
         </s:Panel>
         <mx:ComboBox id="localeComboBox" 
         dataProvider="{locales}" change="comboChangeHandler()"/>
      </s:VGroup>	
   </s:BorderContainer>	
</s:Application>

準備好所有更改后,讓我們以正常模式編譯和運行應用程序,就像在 Flex - 創(chuàng)建應用程序中一樣 章節(jié)。 如果一切順利,您的應用程序,這將產生以下結果:[在線試用]

flex Internalization

使用語言下拉菜單更改語言并查看結果。

flex Internalization 2

Flex - 打印支持

Flex提供了一個特殊的類 FlexPrintJob 來打印flex對象。

  • FlexPrintJob可用于打印一個或多個Flex對象,例如Form或VBox容器。

  • FlexPrintJob打印對象及其包含的所有對象。

  • 對象可以是顯示的界面的全部或部分。

  • 對象可以是格式化用于打印的數(shù)據(jù)的組件。

  • FlexPrintJob類允許您縮放輸出以適應頁面。

  • FlexPrintJob類自動使用多個頁面來打印不適合單個頁面的對象。

  • FlexPrintJob類使操作系統(tǒng)顯示“打印"對話框。 如果沒有某些用戶操作,則無法打印。

準備并發(fā)送打印作業(yè)

FlexPrintJob類使操作系統(tǒng)顯示“打印"對話框。 如果沒有某些用戶操作,則無法打印。...

var printJob:FlexPrintJob = new FlexPrintJob();

開始打印作業(yè)

printJob.start(); 

Flex將使操作系統(tǒng)顯示“打印"對話框。 將一個或多個對象添加到打印作業(yè),并指定如何縮放它們

printJob.addObject(myObject, FlexPrintJobScaleType.MATCH_WIDTH); 

每個對象從一個新頁面開始。 將打印作業(yè)發(fā)送到打印機

printJob.send(); 

打印示例

描述描述
1 Flex - 創(chuàng)建應用程序章節(jié)中所述,在包 com.tutorialspoint.client 下創(chuàng)建名為 HelloWorld 的項目。
2修改 HelloWorld.mxml ,如下所述。 保持文件的其余部分不變。
3編譯并運行應用程序,以確保業(yè)務邏輯按照要求工作。

以下是修改后的mxml文件 src / com.tutorialspoint / HelloWorld.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"
   width="100%" height="100%"
   minWidth="500" minHeight="500" 
   initialize="application_initializeHandler(event)">
   <fx:Style source="/com/tutorialspoint/client/Style.css"/>
   <fx:Script>
     <![CDATA[
        import mx.controls.Alert;
        import mx.events.FlexEvent;
        import mx.printing.FlexPrintJob;
        import mx.printing.FlexPrintJobScaleType;
        protected function btnClickMe_clickHandler(event:MouseEvent):void
        {
            // Create an instance of the FlexPrintJob class.
            var printJob:FlexPrintJob = new FlexPrintJob();
         
            // Start the print job.
            if (printJob.start() != true) return;

            // Add the object to print. Do not scale it.
            printJob.addObject(myDataGrid, FlexPrintJobScaleType.NONE);

            // Send the job to the printer.
            printJob.send();
        }

        protected function application_initializeHandler(event:FlexEvent):void
        {
            lblHeader.text = "My Hello World Application";				
        }
     ]]>
   </fx:Script>
   <s:BorderContainer width="500" height="500" id="mainContainer" 
      styleName="container">
      <s:VGroup width="100%" height="100%" gap="50"
         horizontalAlign="center" 
         verticalAlign="middle">
         <s:Label id="lblHeader" fontSize="40" color="0x777777" 
            styleName="heading"/>
         <mx:DataGrid id="myDataGrid" width="300">
            <mx:dataProvider>
               <fx:Object Product="Flex" Code="1000"/>
               <fx:Object Product="GWT" Code="2000"/>
               <fx:Object Product="JAVA" Code="3000"/>
               <fx:Object Product="JUnit" Code="4000"/>
            </mx:dataProvider>
         </mx:DataGrid>
         <s:Button label="Print Me!" id="btnClickMe" 
            click="btnClickMe_clickHandler(event)" 
            styleName="button" />
      </s:VGroup>	
   </s:BorderContainer>	
</s:Application>

準備好所有更改后,讓我們以正常模式編譯和運行應用程序,就像在 Flex - 創(chuàng)建應用程序中一樣 章節(jié)。 如果一切順利,您的應用程序,這將產生以下結果:[在線試用]

flex Print

點擊打印我按鈕,您可以看到數(shù)據(jù)網(wǎng)格的打印輸出如下所示。

flex Print 2
以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號