Flex 組成、變量、函數、命名空間

Flex 組成、變量、函數、命名空間

 

Adobe? Flex?是Adobe公司的多平臺的RIA(Rich Internet Applications)開發產品

RIA全稱爲“Rich Internet Application”,其意思爲“富互聯網應用程序”。它具有高度的用戶互動性和豐富的用戶體驗



Adobe公司的Flex是一個安裝在客戶端的表現層的服務器;Flex表現層服務器包含了Flex應用框架和Flex運行服務。Flex框架又包含了MXML描述語言,ActionScript程序語和Flex類庫。

Flex應用需要至少一個的MXML文件或ActionScript類文件來構成Flex應用的源程序。



Flex Builder:Flex Builder是Adobe格式官方發佈的IDE(集成開發系統),用來構建在開源的Eclipse IDE上,使用Flex的MXML和ActionScript技術,用來進行Flex書寫和調試

與Live Cycle Data Service(LCDS)集成:LCDS是Flex應用的重要組成部分,簡單的說,其作用在於Flex應用與數據層之間的發送和獲取數據



多數傳統技術包含了至少三層的結構:一個數據層(Data Tier),一個業務層(Business Tier),一個表現層(Presentation Tier)。數據層通常指數據庫或數據源。業務層指應用核心的業務邏輯部分。



Flex 首先包含了一個數據層(Data Tier)和一個業務層(Business Tier),數據層和業務層中間的集成層(Integration Tier),表現層(Presentation Tier)。與傳統技術不同的是,Flex還有一層客戶層(Client Tier),這是與傳統網頁技術完全不同的一個層面。Flex的客戶層允許用戶可以脫離服務器的工作,不受網絡的限制,並且與用戶更好的互動。

MXML

MXML是一種XML語言,最基本的作用是用來佈局Flex應用程序的用戶界面。MXML也可以用來定義不可視的Flex應用。例如,它可以定義數據源,並將數據源綁定到用戶界面。



MXML 類似於HTML,它也提供各種標籤來定義用戶界面MXML標籤不僅包括可視的標籤,如數據表格(DataGrid)、樹結構(Tree)、菜單 (Menu)等;它還包括不可視的標籤,如Web Service連接、數據綁定、動畫效果等。用戶還可以將用戶自定義的組件,定義爲一個MXML標籤。

MXML和HTML最大區別在於MXML定義的應用程序,需要被編譯成SWF文件,並在Flash Player上運行。



<?xml version="1.0" encoding="utf-8"?>定義XML編碼格式

<mx:Application>標籤是所有Flex應用程序的根標籤。



在 Flex編程中,編程者使用兩種語言來進行Flex應用編程:MXML和ActionScript。一般來說,MXML實現了在MVC(Model、 View和Control)編程模式中的View(視圖)部分,而ActionScript則完成Model(模式)的部分。



MXML標籤相當於ActionScript中的類的屬性,大多數MXML標籤對應於ActionScript類或類的屬性。



MXML 文件名必須是合法的ActionScript標識符號。文件名必須以字母或者下劃線(_)起始。文件名中只能包含字母、數字和下劃線。文件名不能與 ActionScript類的名字、組件名一樣,也不能是“Appliction”。同時,不要使用文件名與MXML標籤名一樣。文件名必須有小寫 的.mxml後綴。



<mx:TextArea id="myText" text="hello world" fontFamily="Tahoma"/>

在ActionScript中,與上述MXML代碼得到相同結果的代碼如下所示:

myText.text= "hello world";

myText.setStyle("fontFamily", "Tahoma");





有些MXML標籤的屬性可以設定爲URL的值。例如,在<mx:Script>中,可以使用source屬性來定義外部的一個ActionScript文件。MXML支持下列類型的URL:

絕對路徑:就是文件或目錄在硬盤上真正的路徑。示例如下。

<mx:Style source="http://www.mysite.com/mystyles.css">   

動態的路徑:它與Flex運行根路徑有關。示例如下。

<mx:HTTPService url="@ContextRoot()/directory/myfile.xml"/>

編譯時的路徑:它與Flex運行根路徑有關。示例如下。

<mx:Script source="/myscript.as"/>

相對路徑:就是從當前目錄下找到所需文件的路徑。示例如下。

<mx:Script source="../myscript.as"/>



下面的這組標籤不直接與ActionScript對象和屬性有對應關係,通稱爲編譯標籤。這些標籤在MXML中均用來進行與數據有關的,不可視的設計。

<mx:Binding>:綁定標籤,用來進行在MXML代碼中的數據綁定工作。

<mx:Component>:組件標籤,定義一個文件內部可視組件的實體。

<mx:Metadata>:元數據標籤,提供給Flex編譯器關於如何使用MXML組件信息。

<mx:Model>:模式標籤,在MXML代碼中定義數據模式。

<mx:Script>:ActionScript標籤,用來嵌入ActionScript代碼。

<mx:Style>:樣式標籤,用來嵌入樣式表單。

<mx:XML>:XML標籤,是編譯時的標籤,用來從文本模式產生XML對象,或XMLNode對象。

<mx:XMLList>:XMLList標籤,是編譯時的標籤,用來從包含有效的XML節點的文本模式來產生一個XMLList對象。

<mx:operation>:WebService的操作標籤,用來定義WebService的操作。

<mx:request>:WebService的操作標籤的需求項,用來定義WebService的操作所要的需求項。

<mx:method>:RemoteObject的方法標籤,用來定義RemoteObject所使用的方法。

<mx:arguments>:RemoteObject的方法標籤的參數,用來定義RemoteObject所使用的方法的參數。



MXML標籤規則

不是所有的標籤都要求有id屬性。

所有的根標籤都不能有id屬性。

布爾屬性只有true和false兩個值。

<mx:Binding>要求有source和destination屬性。

<mx:Binding>標籤不能有id屬性。

<mx:WebService>標籤要求wsdl和serviceName中的其中一項,但不允許兩者一起出現。

<mx:RemoteObject>標籤要求source和name中的其中一項,但不允許兩者一起出現。

<mx:HTTPService>標籤要求url和serviceName中的其中一項,但不允許兩者一起出現。

<mx:operation>標籤要求name值,但不允許重複name的值。

<mx:operation>標籤不能有id屬性。

<mx:method>標籤要求name值,但不允許重複name的值。

<mx:method>標籤不能有id屬性。



Web Service是基於網絡的、分佈式的模塊化組件,它執行特定的任務,遵守具體的技術規範,這些規範使得Web Service能與其他兼容的組件進行互操作



ActionScript是對大小寫敏感的語言。



定義一個變量時必須使用var關鍵詞,示例如下:

var index;                     //定義一個變量。

沒有定義變量類型在ActionScript中是合法的,但會給出一個警告信息。定義一個整數類型的變量代碼如下所示。

var index:int;                 //定義一個整數類型變量。



一 個全局(global)變量是在任何函數之外聲明的變量,它在整個代碼中都可以引用和修改。與之相對的是局部(local)變量,它是在函數內部被定義, 只在這一部分代碼中可以被引用和修改的變量。在ActionScript中,變量的作用範圍就是在其中定義此變量的函數或類。全局變量則是在函數和類之外 定義的變量。



ActionScrpt使用const聲明,用來建立常量。常量只能被賦值一次。常量的必須在聲明的範圍內被賦值



var numArray:Array = ["zero", "one", "two"];         //定義一個數組。



數 據類型檢查可以在編譯時間或運行時間進行。靜態語言,如C++或Java是在編譯時間進行檢查;動態語言,如Python是在運行時間進行檢查。 ActionScript做爲一種動態的語言,也是在運行時間進行檢查,但它也支持在編譯時間進行檢查。當定義編譯器的模式爲嚴格模式(strict mode)時,支持在編譯和運行時的類型檢查。在普通模式下,支持運行時的類型檢查。



is操作符是ActionScript新的操作符, 用來測試變量或表達式數據類型。下述的示例建立一個Sprite類的實例,命名爲mySprite。代碼首先使用is來檢查mySprite是否爲 Sprite和DisplayObject類的一個實例,然後檢查它是否爲IEventDispatcher interface的一個成員。

var mySprite:Sprite = new Sprite();

trace (mySprite is Sprite);             //輸出: true

trace (mySprite is DisplayObject);         //輸出: true

trace (mySprite is IEventDispatcher);     //輸出: true



as 操作符是ActionScript新的操作符,用來測試表達式是否是給定的數據類型的成員。與is操作符不同的是,as操作符不返回布爾值,而是返回表達 式的值。下述的示例使用as操作符代替is操作符,以測試Sprite實例是否是一個DisplayObject和IEventDispather數據類 型的成員。

var mySprite:Sprite = new Sprite();

trace (mySprite as Sprite);             //輸出: 〔object Sprite〕

trace (mySprite as DisplayObject);         //輸出: 〔object Sprite〕

trace (mySprite as IEventDispatcher);     //輸出: 〔object Sprite〕



類 型轉換是指將數據從一個數據類型轉換爲其他數據類型。類型轉換可以是隱含的(implicit)和不隱含的(explicit)。隱含的轉換也稱爲強制的 (coercion),在運行時使用。例如,如果給一個布爾類型的變量賦值爲“2”,編譯器則轉換布爾數值爲true。不隱含的轉換也稱爲轉型 (casting),在編譯時改變變量類型所使用。語法如下代碼所示。

var myBoolean:Boolean = true;

var myINT:int = int(myBoolean);

trace(myINT);                                 //輸出: 1



如果一個函數是一個類的一部分,或者是依附於一個對象實例,被稱爲方法。其他的方式稱爲函數closure



使用return聲明在函數中返回數值,return後面可以跟隨一個值或者一個表達式。下面的示例顯示了函數返回一個表達式所產生的值,代碼如下所示。

function doubleNum(baseNum:int):int {

return (baseNum * 2);

}



包和命名空間是相關的概念,包允許編程者將類打包到一起,幫助實現代碼分享和減小命名的衝突,同時幫助管理類文件。命名空間允許編程者控制每個對象的可視性。

在ActionScript中,包是由命名空間來實現的,但它們不是同義詞。當定義一個包時,就要建立一個特定類型的命名空間,保證在編譯時能被識別。當命名空間直接建立時,不需要在編譯時被識別。

ActionScript 提供了非常靈活的方法來組織包,類和源文件。ActionScript允許建立多個類在一個源文件中,但每個文件中只有一個類可以在包中被聲明。在包中的 類的名稱必須和文件名一致。在ActionScript中使用package語句來聲明包。其語法示例如下所示:

package 文件包名 {

public class 類名 {}

}

如果需要使用包中的一個類,就必須要輸入包或者特定的類。示例代碼如下所示。

import samples.*;  //輸入samples類

如果只需要使用包中的一個類,建議使用下面的用法。因爲輸入整個包可能會引起文件名衝突。

import samples.SampleCode;



命名空間用來控制編程者建立的屬性和方法的可視性。使用ActionScript命名空間有以下三個基本的步驟。

(1)使用namespace關鍵詞來定義命名空間,代碼如下所示。

namespace vsersion1;

(2)在定義屬性和方法時使用命名空間,代碼如下所示。

version1 function myFunction () {};

(3)當使用了命名空間,就可以使用use來引用命名空間,代碼如下所示。

use namespace version1;

myFunction();



使 用MXML文件中,用戶可以使用<mx:Script>標籤直接把ActionScript代碼放置在文件中,也可以包含(include) 在裏面。當使用<mx:Script>時,所有的內容都必須包含在CDATA結構中。這樣保證編譯將script塊當作 XML來處理。因此Flex建議使用以下的結構來包含ActionScript代碼。

<mx:Script>

<![CDATA[

...

]]>

</mx:Script>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章