【軟件工程】Flex-Builder教程_第1頁(yè)
【軟件工程】Flex-Builder教程_第2頁(yè)
【軟件工程】Flex-Builder教程_第3頁(yè)
【軟件工程】Flex-Builder教程_第4頁(yè)
【軟件工程】Flex-Builder教程_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、.:.;Flex Builder教程一,概述Flex言語(yǔ)包含了一個(gè)豐富的用戶界面組件庫(kù),MXML一種基于XML的標(biāo)志言語(yǔ)和ActionScript基于ECMA 262的、強(qiáng)類型面向?qū)ο缶幊萄哉Z(yǔ)。MXML用于排布用戶界面和處置運(yùn)用中其他方面的問(wèn)題,而ActionScript用來(lái)處置用戶交互邏輯。由于Flash平臺(tái)的普及, Flex使開(kāi)發(fā)者可以開(kāi)發(fā)廣泛的運(yùn)用程序。開(kāi)發(fā)者可以運(yùn)用工業(yè)規(guī)范如XML,CSS和SVC和他們所熟習(xí)的方式和范例來(lái)創(chuàng)建運(yùn)用。Flex的分別協(xié)作方式和Flex公用組件模型也使得開(kāi)發(fā)者和界面設(shè)計(jì)者能更好的進(jìn)展協(xié)作,在可靠的、易于維護(hù)的架構(gòu)上消費(fèi)出在用戶體驗(yàn)方面有突破性的產(chǎn)品。 Fle

2、x Builder(FB)之于MXML就如DREAWEAVER之于HTML。FB實(shí)現(xiàn)了代碼與界面分開(kāi),F(xiàn)LEX的類程序擴(kuò)展名為*.as,語(yǔ)法與java/c+很象,F(xiàn)LEX程序文件擴(kuò)展名為.mxml,其實(shí)就是擁有很多特殊元素的XML文件。 二,運(yùn)用MXML組件構(gòu)建用戶界面MXML 言語(yǔ)支持兩種用戶界面組件類型: 控件和容器。容器是包含控件和其他容器的屏幕的矩形區(qū)域??丶潜韱卧? 如按鈕、文本字段和列表框。 可以運(yùn)用Flex Component ExplorerFlex MXML組件閱讀工具來(lái)查看一切控件的代碼和樣例。 1,參與常用可視控件: 運(yùn)用可視控件組織界面,可以定義組件屬性供外部訪問(wèn)

3、A, 基于文本的控件(Text controls): Label(單行文本顯示)、Text(多行文本顯示)、TextInput(單行文本顯示與輸入)、 TextArea(多行行文本顯示與輸入)和 RichTextEditor (富文本顯示與輸入)控件。用于顯示文本和/或接納用戶的文本輸入,都有一個(gè) text 屬性用于設(shè)置要顯示的文本。運(yùn)用 RichTextEditor 控件可以輸入文本、編輯文本和設(shè)置文本格式。用戶經(jīng)過(guò)運(yùn)用位于 RichTextEditor 控件底部的子控件, 運(yùn)用文本格式和 URL 鏈接。 B, 基于按鈕的控件組件(Button 系列,Form controls):Butto

4、n(激活時(shí)會(huì)發(fā)出click和buttonDown事件)、LinkButton(用于翻開(kāi)URL)、CheckBox(標(biāo)簽會(huì)被自動(dòng)裁剪以適宜控件邊境。)、RadioButton(指由 標(biāo)簽創(chuàng)建的組) 和 PopupButton 控件(常用于翻開(kāi)List控件或Menu控件簽。)。 2,參與基于列表的控件,并獲取數(shù)據(jù) 基于列表的控件: 是在其承繼層次構(gòu)造內(nèi)的某些點(diǎn)上擴(kuò)展 ListBase 類的那些控件。它們包括 ComboBox、List、HorizontalList、DataGrid、Tile、Menu 和 Tree 控件。都可從某數(shù)據(jù)提供程序的數(shù)據(jù)獲得數(shù)據(jù)列表。 另: 許多規(guī)范控件 (包括 Col

5、orPicker 和 MenuBar 控件) 也是數(shù)據(jù)提供程序控件。 可以運(yùn)用兩種方法設(shè)置組件的數(shù)據(jù)提供程序: 1),直接在MXML標(biāo)簽中參與數(shù)據(jù),將 Array 或 Collection 定義為獲得數(shù)據(jù)提供程序的控件的子標(biāo)簽。該方法具有實(shí)施快速的優(yōu)點(diǎn), 適宜與靜態(tài)數(shù)據(jù)一同運(yùn)用及用于原型設(shè)計(jì)。 2),運(yùn)用數(shù)據(jù)綁定: 運(yùn)用Bindable元數(shù)據(jù)標(biāo)簽(屬性非默許綁定,必需明確的聲明被綁定的屬性),將控件綁定到運(yùn)用 ActionScript 定義的現(xiàn)有 Array 或 Collection。 3, 運(yùn)用REPEATER: 是非可視控件,類似于編程言語(yǔ)里的For循環(huán),可在執(zhí)行期復(fù)制其它組件。的卷標(biāo)要本

6、人輸入,而dataProvider可在區(qū)段之中,以Bindable的Metadata定義之?dāng)?shù)組作連結(jié)。REPEATER還可嵌套運(yùn)用。 4, 參與數(shù)據(jù)驗(yàn)證:數(shù)據(jù)模型支持自動(dòng)數(shù)據(jù)驗(yàn)證,這就意味著他可以很方便地運(yùn)用Flex驗(yàn)證器。as3.0驗(yàn)證的類包為mx.Validators.包中有一個(gè)基類Validator,其他的類都為其子類: 1),用標(biāo)簽實(shí)現(xiàn)驗(yàn)證: /綁定驗(yàn)證對(duì)象:source:表示驗(yàn)證的對(duì)象,property:表示驗(yàn)證對(duì)象的屬性 2),用AS編程實(shí)現(xiàn)驗(yàn)證 還可以參與按鈕觸發(fā)器,并修正默許提示錯(cuò)誤 /trigger:表示觸發(fā)驗(yàn)證事件的對(duì)象/triggerEvent:表示對(duì)象觸發(fā)驗(yàn)證事件的時(shí)機(jī)

7、(如click,mouseOver等)/requiredFieldError屬性 表示必填項(xiàng)沒(méi)填入數(shù)據(jù)的時(shí)的提示錯(cuò)誤信息/wrongLengthError:表示輸入的數(shù)據(jù)阿拉伯?dāng)?shù)字長(zhǎng)度小于10時(shí)提示的錯(cuò)誤信息/invalidCharError:表示輸入數(shù)據(jù)不是阿拉伯?dāng)?shù)字時(shí)提示的錯(cuò)誤信息 3),高級(jí)用法: 運(yùn)用正那么表達(dá)式創(chuàng)建自定義驗(yàn)證器 5, 參與資源(圖片,音頻,視頻,程序):運(yùn)轉(zhuǎn)時(shí)外載和編譯時(shí)直接內(nèi)嵌兩種方式,外載方式要多花一段載入時(shí)間,但運(yùn)用簡(jiǎn)單;內(nèi)嵌方式可直接調(diào)用資源,但加重了程序的負(fù)擔(dān)(體積變大,且圖片編輯后需求重新編譯) 1),Image(圖畫)控件: 可外載或內(nèi)嵌多種富媒體資源:

8、 JPEG、GIF、PNG位圖、SVG矢量圖(只能內(nèi)嵌) , SWF動(dòng)畫(非Flex的SWF運(yùn)用程序。),SWF庫(kù)按鈕(Button),SWF庫(kù)動(dòng)畫(MovieClip), /外載一個(gè)富媒體,可運(yùn)用絕對(duì)或者相對(duì)途徑。但參與SWF文件時(shí),可用use-network參數(shù)指定其運(yùn)用網(wǎng)絡(luò)或者本地文件二者之一。/簡(jiǎn)單地內(nèi)嵌一個(gè)富媒體.png,.jpg,.gif,.swf(可將嵌入的SWF文件的實(shí)例當(dāng)作 MovieClip.MovieClipAsset 類的實(shí)例處置,不能直接訪問(wèn)嵌入的SWF文件的屬性或方法。但可用 LocalConnection以允許SWF之間進(jìn)展通訊。),.SVG(可將嵌入的SVG文件

9、的實(shí)例當(dāng)作Sprite.SpriteAsset類的實(shí)例處置。)/在腳本中定義富媒體對(duì)象,然后在MXML中可以多次嵌入 /在腳本中定義圖片的scale-9像框縮放功能就可以堅(jiān)持邊框的明晰,(旋轉(zhuǎn)嵌入的scale-9 圖像的實(shí)例會(huì)封鎖該圖像的scale-9功能。)。 /嵌入 SWF 庫(kù)資源 2) 設(shè)置翻轉(zhuǎn)的圖片:運(yùn)用 CSS為外觀外載/內(nèi)嵌翻轉(zhuǎn)的圖像 可以定義一個(gè)現(xiàn)有的CSS類型選擇器為該類型的一切組件設(shè)置外觀。還可以進(jìn)一步創(chuàng)建自定義CSS 類。 Button upSkin: Embed(assets/box_closed.png); overSkin: Embed(assets/box.png)

10、; downSkin: Embed(assets/box_new.png); 3), SWFLoader控件: 通常用來(lái)參與Flex運(yùn)用程序(可以運(yùn)用AS與其通訊),當(dāng)然也能用于參與Image控件所能參與的富媒體資源。 /外載入SWF程序/內(nèi)嵌入SWF程序/還可以在FDS環(huán)境下參與MXML文件,要以buttonicon.mxml.swf方式參與,以提示FDS編譯該文件。 4), 參與MP3音頻: 您可以在 Flex 運(yùn)用程序中經(jīng)過(guò)運(yùn)用Embed元數(shù)據(jù)標(biāo)簽嵌入MP3文件并播放它。留意音頻文件的體積要優(yōu)化。 5), 參與字體: 您希望在 Flex 運(yùn)用程序中嵌入一種字體并將它用作基于文本的組件的款

11、式。 下面的例如創(chuàng)建援用嵌入的字體的 font-family 稱號(hào)的一個(gè)類選擇器。 接著它會(huì)創(chuàng)建一個(gè) Text 控件并將其款式設(shè)置為該類選擇器。 提示: 您在嵌入字體以節(jié)省文件大小時(shí)僅可以從字體添加某些字符, 方法是指定您的 font-face 聲明的 unicode-range 屬性。 font-face font-family: Copacetix; src: url(assets/copacetix.ttf); unicode-range: U+0020-U+0040, /* Punctuation, Numbers */ U+0041-U+005A, /* Upper-Case A-Z

12、 */ U+005B-U+0060, /* Punctuation and Symbols */ U+0061-U+007A, /* Lower-Case a-z */ U+007B-U+007E; /* Punctuation and Symbols */ .MyTextStyle font-family: Copacetix; font-size: 24pt; 三,數(shù)據(jù)綁定以MXML標(biāo)志來(lái)描畫UI,數(shù)據(jù)綁定(Data binding)來(lái)銜接數(shù)據(jù),這樣就真正實(shí)現(xiàn)了UI和程序邏輯的分別。Data binding可以一綁多或者多綁一。 1, 在MXML中運(yùn)用大括號(hào)語(yǔ)句: 格式為:源對(duì)象.屬性。可

13、直接傳送給目的對(duì)象;高級(jí)用法是在中包含AS表達(dá)式、AS函數(shù)或者E4X表達(dá)式 2, 在MXML中運(yùn)用標(biāo)簽:這是語(yǔ)句的替代用法,格式為:;高級(jí)用法是在標(biāo)簽中包含AS表達(dá)式或者E4X表達(dá)式 /在Model數(shù)據(jù)中運(yùn)用語(yǔ)句來(lái)綁定數(shù)據(jù) input1.text /用標(biāo)簽來(lái)綁定數(shù)據(jù) 3, 運(yùn)用AS類來(lái)綁定:運(yùn)用mx.binding.utils.BindingUtils的bindProperty()或者bindSetter() 方法 四,界面規(guī)劃和導(dǎo)航容器定義了Flash Player的繪圖外表的一個(gè)矩形區(qū)域。子容器包括控件和容器。Container 類是一切 Flex 容器類的根本類。擴(kuò)展 Container

14、 類的容器添加它們本人的功能以進(jìn)展子組件規(guī)劃。Application 容器是的Flex運(yùn)用程序的獨(dú)一根部容器, 代表整個(gè) Flash Player 繪圖外表。 1,規(guī)劃容器: 運(yùn)用規(guī)劃容器可進(jìn)展用戶界面規(guī)劃。 A, 面板(Panel)容器 顯示一個(gè)標(biāo)題欄、一個(gè)標(biāo)題、一個(gè)邊框及其子級(jí)。默許情況下, Panel 容器會(huì)對(duì)子組件進(jìn)展垂直規(guī)劃, 并且可以經(jīng)過(guò)將規(guī)劃屬性設(shè)置為 absolute 或 horizontal來(lái)覆蓋此設(shè)置。 B, HDividedBox容器 對(duì)子組件進(jìn)展程度規(guī)劃, 除了在子級(jí)之間插入一個(gè)可調(diào)整的分割線之外, 它與 HBox 容器很類似。 VDividedBox 容器對(duì)子組件進(jìn)展

15、垂直規(guī)劃, 而且也在子級(jí)之間插入一個(gè)可調(diào)整的分割線。 C, 平鋪(Tile)容器 以多行或多列的方式陳列其子級(jí)。 D, 表單(Form)容器 以規(guī)范的表單格式陳列其子級(jí)。 E, ApplicationControlBar 容器 包容提供全局導(dǎo)航和運(yùn)用程序命令的組件, 并可以停靠在 Application 容器的上邊緣。 F, ControlBar容器將控件置于 Panel 或 TitleWindow 容器的下邊緣。 G, 另外可運(yùn)用Spacer控件來(lái)輔助規(guī)劃。Spacer控件并非容器,而是基于百分比的可用于擠占留空以準(zhǔn)確定位的一個(gè)不可見(jiàn)控件。 2, 導(dǎo)航容器: 運(yùn)用導(dǎo)航容器可以控制其他容器的多

16、個(gè)子級(jí)之間的用戶挪動(dòng)或?qū)Ш?。?dǎo)航器容器不能直接嵌套控件,只能嵌套容器。 A,手風(fēng)琴(Accordion)容器 定義一個(gè)子面板序列, 但一次僅顯示一個(gè)面板。 假設(shè)要導(dǎo)航容器, 用戶會(huì)單擊與他們需求訪問(wèn)的子面板相對(duì)應(yīng)的導(dǎo)航按鈕。 運(yùn)用 Accordion 容器, 用戶可以按任何順序訪問(wèn)子面板以在表單中前后挪動(dòng)。 B, TabNavigator容器 創(chuàng)建和管理一組選項(xiàng)卡, 運(yùn)用它們可在其子級(jí)中間導(dǎo)航。 TabNavigator 容器的子級(jí)是其他容器。 TabNavigator 容器為每個(gè)子級(jí)創(chuàng)建一個(gè)選項(xiàng)卡。 當(dāng)用戶選中某個(gè)選項(xiàng)卡時(shí), TabNavigator 容器會(huì)顯示相關(guān)聯(lián)的子級(jí)。 C, View

17、Stack容器 由彼此堆疊在一同的子容器的一個(gè)集合組成, 一次只需一個(gè)容器是可見(jiàn)的或活動(dòng)的。 ViewStack 容器不為用戶定義切換當(dāng)前活動(dòng)容器的內(nèi)置機(jī)制;您必需運(yùn)用 LinkBar、TabBar、ButtonBar 或 ToggleButtonBar 控件或本人在 ActionScript 中構(gòu)建邏輯讓用戶來(lái)更改當(dāng)前活動(dòng)的子級(jí)。 3, 運(yùn)用容器Containers進(jìn)展定位規(guī)劃 定位方式有三種: A, 自動(dòng)定位:多數(shù)Flex容器運(yùn)用默許預(yù)定義的規(guī)那么動(dòng)定位他在其中定義的一切的子組件。 B, 運(yùn)用絕對(duì)定位: 用于使控件重疊 C, 運(yùn)用基于約束的規(guī)劃: 可以錨定容器的邊緣或者中心點(diǎn),然后控件就會(huì)

18、隨著容器的伸縮而伸縮 Canvas容器,和layout屬性為absolute的Application或Panel容器才干進(jìn)展絕對(duì)定位,或約束規(guī)劃。 4,運(yùn)用視圖形狀(或ViewStack導(dǎo)航容器)進(jìn)展用戶界面切換導(dǎo)航 可以為一個(gè)Flex程序或組件定義幾種視圖形狀,然后經(jīng)過(guò)改動(dòng)(切換)視圖形狀而改動(dòng)用戶界面。(ViewStack導(dǎo)航容器可實(shí)現(xiàn)同樣效果) 1),設(shè)計(jì)根底形狀(Base state,Start,currentState=):就是在默許形狀下設(shè)計(jì)用戶界面。 2),設(shè)計(jì)視圖形狀(currentState=SomeState):在設(shè)計(jì)方式中,在形狀查看Window States上點(diǎn)擊新形狀

19、/New State 按鈕。然后在此形狀下編輯的界面即為該視圖的對(duì)應(yīng)界面。 3),創(chuàng)建用戶行為切換控件: 定義用戶變換形狀的點(diǎn)擊事件處置器。普通是運(yùn)用一個(gè)LinkButtun,激活currentState=SomeState以切換到某界面,激活currentState=以回到默許界面。 五,運(yùn)用CSS格式化組件1. 文字橫豎陳列Aligning Text Vertically & Horizontally 款式對(duì)于定義Flex運(yùn)用程序的外觀和覺(jué)得 (外觀) 很有用。您可以運(yùn)用它們來(lái)更改單一組件的外觀, 或在一切組件上運(yùn)用它們。 在 Flex 中運(yùn)用款式有許多方法。 某些款式提供更多粒度控制并能

20、以編程方式被執(zhí)行。其他款式不像那么靈敏, 但能夠需求較少的計(jì)算。在 Flex 中, 可以運(yùn)用以下幾種方法將款式運(yùn)用到控件: 1, 運(yùn)用本地款式定義 2, 運(yùn)用外部款式表 3, 運(yùn)用線上款式 4, 運(yùn)用 setStyle() 方法 六,運(yùn)用特效豐富用戶體驗(yàn)1, 添加效果 1), 效果是在較短時(shí)間上發(fā)生的對(duì)組件的更改。 效果的例子有: 淡化組件、調(diào)整組件大小和挪動(dòng)組件。 一種效果與一個(gè)觸發(fā)器相結(jié)合才干構(gòu)成一個(gè)行為, 如組件上的鼠標(biāo)單擊、組件獲得焦點(diǎn)或組件變成可見(jiàn)的。 在 MXML 中, 您將效果運(yùn)用為控件或容器的屬性。 Adobe Flex 提供具有默許屬性的一組內(nèi)置效果。 作為對(duì)某些用戶或編程操

21、作的呼應(yīng), 行為使您可以將動(dòng)畫、動(dòng)作和聲音添加到運(yùn)用程序中。 例如, 您可運(yùn)用行為在獲得焦點(diǎn)時(shí)彈出對(duì)話框, 或是在用戶輸入無(wú)效的值時(shí)發(fā)出聲音。 Flex 觸發(fā)器屬性是作為層疊款式表 (CSS) 款式被實(shí)施的。 在 Adobe Flex 2 言語(yǔ)參考中, 觸發(fā)器被列出在標(biāo)題“效果的下面。 假設(shè)要?jiǎng)?chuàng)建行為, 您定義一個(gè)具有獨(dú)一 ID 的特定效果并將它綁定到觸發(fā)器。 例如, 下面的代碼創(chuàng)建兩個(gè)縮放效果: 一個(gè)用于細(xì)微減少組件, 一個(gè)用于將組件復(fù)原至其原始大小。 這些效果經(jīng)過(guò)運(yùn)用它們的獨(dú)一 ID 被分配到“按鈕組件上的 mouseDownEffect 和 mouseUpEffect 觸發(fā)器上。 留意如

22、何將 Panel 容器的 autoLayout 屬性設(shè)置為 false。這樣是為了阻止在按鈕改動(dòng)大小時(shí)面板改動(dòng)大小。 2),運(yùn)用效果方法和事件 您可以調(diào)用效果上的方法來(lái)改動(dòng)它們播放的方式。 例如, 可以經(jīng)過(guò)調(diào)用效果的 pause() 方法來(lái)暫停效果, 并經(jīng)過(guò)運(yùn)用其 resume() 方法來(lái)繼續(xù)該效果??梢越?jīng)過(guò)調(diào)用效果的 end() 方法來(lái)終了該效果。 當(dāng)效果開(kāi)場(chǎng)和效果終了時(shí), 它也會(huì)發(fā)出 startEffect 和 endEffect 事件。 您可以監(jiān)聽(tīng)這些事件并呼應(yīng)您的事件形狀中的更改。 下面的例如運(yùn)用“挪動(dòng)效果的方法和事件來(lái)創(chuàng)建一個(gè)簡(jiǎn)單的游戲。 該游戲的目的是使直升飛機(jī)盡能夠接近靶而又不撞

23、到它。 靠得越近, 博得的點(diǎn)數(shù)越多。 3, 運(yùn)用過(guò)渡添加用戶界面切換效果 過(guò)渡(transition,變換)是定義在視圖形狀切換之間播放的一種或多種視覺(jué)效果。過(guò)渡不會(huì)交換效果;即, 您仍可以將單一效果運(yùn)用到一個(gè)組件, 并經(jīng)過(guò)運(yùn)用一個(gè)效果觸發(fā)器或者 playEffect()方法來(lái)調(diào)用該效果。創(chuàng)建過(guò)渡樣例如下: /fromState 屬性指定當(dāng)運(yùn)用該過(guò)渡時(shí)您要更改的視圖形狀/toState 屬性指定您要更改為的視圖形狀/effect 屬性是對(duì)要播放的 Effect 對(duì)象的援用/ 和 標(biāo)簽分別引發(fā)并行或按順序播放的效果/效果標(biāo)簽4, 為用戶提供工具提示 Adobe Flex ToolTip 使您可以

24、為您的用戶提供有協(xié)助 的信息。當(dāng)用戶在圖形組件上挪動(dòng)鼠標(biāo)指針時(shí), 會(huì)彈出包含文本信息的工具提示。您可以運(yùn)用工具提示來(lái)指點(diǎn)用戶完成運(yùn)用運(yùn)用程序或自定義它們來(lái)提供其他功能。 擴(kuò)展 UIComponent 類 (該類實(shí)現(xiàn) IToolTipManagerClient 界面) 的每個(gè)可視 Flex 組件都支持 toolTip 屬性。您將 toolTip 屬性的值設(shè)置為一個(gè)文本字符串, 并且, 當(dāng)鼠標(biāo)指針懸停在該組件上時(shí), 會(huì)顯示該文本字符串。 雖然長(zhǎng)音訊很難讀取, 但對(duì)工具提示文本的大小不存在任何限制。當(dāng)工具提示文本到達(dá)工具提示框的寬度時(shí), 文本會(huì)自動(dòng)換至下一行??梢栽诠ぞ咛崾疚谋局刑砑訐Q行符。在 Ac

25、tionScript 中, 您運(yùn)用 n 本義的新行字符。在 MXML 標(biāo)簽中, 您運(yùn)用 XML 實(shí)體。 可以經(jīng)過(guò)運(yùn)用層疊款式表 (CSS) 語(yǔ)法或 mx.styles.StyleManager 類更改工具提示文本和工具提示框的外觀。對(duì)工具提示款式的更改適用于當(dāng)前運(yùn)用程序中的一切工具提示。 5, 控制光標(biāo) 運(yùn)用Flex光標(biāo)管理器可以控制 Flex 運(yùn)用程序中的光標(biāo)圖像。 例如, 假設(shè)運(yùn)用程序執(zhí)行的處置需求用戶等待, 直四處置完成為止, 那么可以將光標(biāo)更改為某個(gè)自定義的光標(biāo)圖像, 比如沙漏, 以使它反映該等待期。 您還可以更改光標(biāo)以向用戶提供反響, 指示用戶可以執(zhí)行的操作。 例如, 您可以運(yùn)用一個(gè)

26、光標(biāo)圖像來(lái)指示用戶輸入被啟用, 而運(yùn)用另一個(gè)光標(biāo)圖像來(lái)指示輸入被禁用。 CursorManager 類控制一個(gè)光標(biāo)優(yōu)先順序列表, 在其中具有最高優(yōu)先級(jí)的光標(biāo)當(dāng)前是可見(jiàn)的。 假設(shè)光標(biāo)列表包含具有一樣優(yōu)先級(jí)的多個(gè)光標(biāo), 那么光標(biāo)管理器會(huì)顯示最近創(chuàng)建的光標(biāo)。 1), 運(yùn)用默許的忙光標(biāo) Flex 定義了一個(gè)默許的忙光標(biāo), 可用來(lái)指示運(yùn)用程序正在處置, 且在運(yùn)用程序?qū)τ脩糨斎胱鞒龊魬?yīng)之前, 用戶應(yīng)等待, 直四處置完成。 默許的忙光標(biāo)是一個(gè)動(dòng)畫時(shí)鐘。 可以運(yùn)用以下幾種方式來(lái)控制忙光標(biāo): 可以運(yùn)用 CursorManager 方法來(lái)設(shè)置和刪除忙光標(biāo)。 可以運(yùn)用 SWFLoader、WebService、Ht

27、tpService 和 RemoteObject 類的 showBusyCursor 屬性自動(dòng)顯示忙光標(biāo)。 下面的例如運(yùn)用 CursorManager 類的靜態(tài) setBusyCursor() 和 removeBusyCursor() 方法, 根據(jù)切換按鈕的形狀顯示和隱藏默許的 Flex 忙光標(biāo)。 2), 運(yùn)用自定義光標(biāo) 可以運(yùn)用 JPEG、GIF、PNG 或 SVG 圖像, Sprite 對(duì)象或 SWF 文件作為光標(biāo)圖像。 假設(shè)要運(yùn)用光標(biāo)管理器, 您將 mx.managers.CursorManager 類導(dǎo)入到運(yùn)用程序中, 然后援用其屬性和方法。 下面的例如嵌入一個(gè)在 Adobe Flas

28、h 中創(chuàng)建的沙漏的 SWF 動(dòng)畫, 并將它用作一個(gè)自定義光標(biāo)。 在該例如中, 創(chuàng)建自定義光標(biāo)的方法是, 調(diào)用 CursorManager 類的 setCursor() 靜態(tài)方法, 然后將它傳送給對(duì)您希望用作自定義光標(biāo)的嵌入資源的類的援用。 可以經(jīng)過(guò)調(diào)用 CursorManager 類的 removeCursor() 靜態(tài)方法并將它傳送給 CursorManager 類的 currentCursorID 靜態(tài)屬性來(lái)刪除活動(dòng)的自定義光標(biāo)。 七,運(yùn)用ActionScript處置事件1, 事件模型與機(jī)制 Flex的事件模型基于DOM3事件模型。經(jīng)過(guò)創(chuàng)建注冊(cè)事件監(jiān)聽(tīng)器(事件處置程序,事件處置器,是函數(shù)方

29、法用于呼應(yīng)指定的事件),可以在組件的實(shí)例發(fā)出某個(gè)事件(如用戶何時(shí)與界面組件交互, 以及在組件的外觀或生命周期中何時(shí)發(fā)生重要的變化, 如組件的創(chuàng)建或破壞或調(diào)整其大小等)時(shí), 對(duì)象事件自動(dòng)派發(fā)此事件到一切注冊(cè)過(guò)的監(jiān)聽(tīng)器。 1),事件流:當(dāng)一個(gè)事件被派發(fā)出來(lái)時(shí), 事件對(duì)象從根節(jié)點(diǎn)開(kāi)場(chǎng)自上而下開(kāi)場(chǎng)掃描display list(如), 不斷到目的對(duì)象, 檢查每個(gè)節(jié)點(diǎn)能否有相應(yīng)的監(jiān)聽(tīng)器。目的對(duì)象指的是display list中產(chǎn)惹事件的對(duì)象. 比如:。假設(shè)此時(shí) resize了VBox, 那么會(huì)從根(Application)開(kāi)場(chǎng), 下來(lái)檢查Panel, HBox, 直到目的對(duì)象-產(chǎn)生resize事件的VBo

30、x為止. 2), 事件的派發(fā) Flex中可以經(jīng)過(guò)dispatchEvent()方法手工派發(fā)事件, 一切UIComponent的子類都可以調(diào)用此方法. 語(yǔ)法: /參數(shù)event_type是Event對(duì)象的type屬性/函數(shù)的前往值總是True.objectInstance.dispatchEvent(new Event(event_type):Boolean可以運(yùn)用此方法派發(fā)恣意事件, 而不僅僅是用戶自定義事件, 比如: 可以派發(fā)一個(gè)Button的Click事件. var result:Boolean = buttonInstance.dispatchEvent(new Event(MouseE

31、vent.CLICK); 在Flex運(yùn)用中不是必需對(duì)新派發(fā)的事件進(jìn)展處置, 假設(shè)觸發(fā)了一個(gè)事件, 而沒(méi)有對(duì)應(yīng)的Listener時(shí),Flex忽略此事件. 假設(shè)想給Event對(duì)象添加新屬性, 就必需承繼Event類,然后定義新屬性 3), 事件的傳播 事件觸發(fā)后, Flex有3個(gè)檢測(cè)事件監(jiān)聽(tīng)器的階段, 3個(gè)階段的發(fā)生的順序如下: A. 捕獲階段:在捕獲階段,Flex在顯示列表中檢查事件的祖先能否注冊(cè)了事件的監(jiān)聽(tīng)器. Flex從根節(jié)點(diǎn)開(kāi)場(chǎng)順序而下. 大多數(shù)情況中, 根節(jié)點(diǎn)是Application對(duì)象. 同時(shí), Flex改動(dòng)事件的currentTarget值. 缺省情況下, 在此階段,沒(méi)有容器監(jiān)聽(tīng)事件

32、. use_capture參數(shù)的值是False,在此階段添加監(jiān)聽(tīng)的獨(dú)一方法是在調(diào)用add_listener時(shí),傳入一個(gè)為True值的use_capture參數(shù), 比如: myAccordion.addEventListener(MouseEvent.MOUSE_DOWN, customLogEvent, true);假設(shè)是在Mxml中添加監(jiān)聽(tīng), Flex設(shè)置此參數(shù)為False, 沒(méi)有方法進(jìn)展修正. 假設(shè)設(shè)置了use_capture為True, 那么事件將不會(huì)上浮. 假設(shè)既想捕獲又想上浮就必需調(diào)用 addEventListener兩次. 一次use_capture參數(shù)為true, 一次為fals

33、e; 捕獲很少運(yùn)用, 上浮的運(yùn)用更為普遍. B. 目的階段: 在目的階段, Flex激發(fā)事件的監(jiān)聽(tīng)程序, 不檢查其他的節(jié)點(diǎn). C. 上浮階段:事件只在bubbles屬性為True時(shí)才進(jìn)展上浮. 可以上浮的事件包括: change, click, doubleClick, keyDown, keyUp, mouseDown, mouseUp. 在上浮階段, Flex改動(dòng)事件的currentTarget屬性, 而target屬性是初始派發(fā)事件的對(duì)象. 在恣意一個(gè)階段, 節(jié)點(diǎn)們都有時(shí)機(jī)操作事件. 比如: 用戶點(diǎn)擊了一個(gè)在VBox中的Button,在捕獲階段, Flex檢查Application對(duì)象(

34、根節(jié)點(diǎn))和VBox能否有監(jiān)聽(tīng)器處置此事件. Flex然后在目的階段觸發(fā)按鈕的監(jiān)聽(tīng)器.在上浮階段, VBox和運(yùn)用以與捕獲階段相反的順序再次獲得時(shí)機(jī)處置事件. 在Actionscript3.0中,他可以在恣意目的節(jié)點(diǎn)上注冊(cè)事件監(jiān)聽(tīng)器. 但是部分事件會(huì)被直接傳給目的節(jié)點(diǎn),比如Socket類. 捕獲階段的節(jié)點(diǎn)順序是從父節(jié)點(diǎn)到子節(jié)點(diǎn)的, 而上浮階段剛好相反. 捕獲事件缺省是封鎖的,也就是說(shuō)假設(shè)要捕獲事件, 必需顯式指定在捕獲階段進(jìn)展處置. 每一個(gè)Event都有target和currentTarget屬性, 協(xié)助 跟蹤事件傳播的過(guò)程. 4), 查詢事件階段 運(yùn)用事件的eventPhase可以獲得事件當(dāng)前

35、的階段, 1): CAPTURE_PHASE 2): AT_TARGET 3): BUBBLING_PHASE 例如: private function determineState(event:MouseEvent):Void Debug.trace(event.eventPhase + : + event.currentTarget.id); 5), 停頓傳播 運(yùn)用下面兩個(gè)函數(shù)停頓事件的傳播: stopPropagation() stopImmediatePropagation() 2, 創(chuàng)建監(jiān)聽(tīng)器 組件有Flex提供的內(nèi)建事件. 也可以運(yùn)用派發(fā)-監(jiān)聽(tīng)模型定義本人的事件監(jiān)聽(tīng)器, 并指定監(jiān)聽(tīng)

36、器監(jiān)聽(tīng)何種事件. 有三種方式: 1), 內(nèi)部MXML中的AS函數(shù)法: 在MXML的聲明中注冊(cè)監(jiān)聽(tīng)器: 這是第一個(gè)和運(yùn)用最廣泛的方法,在 MXML 中定義事件發(fā)生時(shí)會(huì)調(diào)用的事件處置程序。 2), 外部AS文件中的AS函數(shù)法:經(jīng)過(guò)ActionScript定義注冊(cè)事件處置程序: 可以經(jīng)過(guò)運(yùn)用ActionScript 中的 addEventHandler() 等方法來(lái)注冊(cè)事件處置程序。 可將 addEventHandler() 方法置于 Application 容器的 creationComplete 事件(在 Application 表單及其子級(jí)被初始化之后, 在啟動(dòng)運(yùn)用程序時(shí)發(fā)生)的事件處置程序中

37、。 詳見(jiàn)Action Script教程。 3), 代碼混寫法: 在MXML的控件標(biāo)簽中直接完全嵌入監(jiān)聽(tīng)器(這也稱為運(yùn)用線上事件處置程序): 這樣比較直接,代碼也較少,但會(huì)導(dǎo)致代碼很難閱讀、維護(hù)和縮放。假設(shè)監(jiān)聽(tīng)器是多個(gè)AS語(yǔ)句甚至更復(fù)雜的邏輯,不引薦此方法。 六,數(shù)據(jù)效力器訪問(wèn)概述Flex 被設(shè)計(jì)為可以與許多類型的效力器打交道,從而提供對(duì)本地和遠(yuǎn)端邏輯的訪問(wèn)。提供數(shù)據(jù)訪問(wèn)的MXML 組件被稱之為數(shù)據(jù)效力器組件(data service components)。MXML 包含了如下幾種類型的數(shù)據(jù)效力器組件: 1. HTTPService 提供對(duì)前往數(shù)據(jù)的HTTP URLs 的訪問(wèn)。經(jīng)過(guò) get/p

38、ost 來(lái)傳送純文字資料。益處是非常普及于一切的后臺(tái),但缺陷那么是復(fù)雜的數(shù)據(jù)類型要經(jīng)過(guò)復(fù)雜的序列化與解序列化程序才干在client/server間交換。 2. WebService 提供對(duì)運(yùn)用SOAP 的web 效力器的訪問(wèn)。WebService 也是很常見(jiàn)的選擇,益處是規(guī)那么共通,方便不同技術(shù)平臺(tái)交換資料,缺陷那么同樣是某些復(fù)雜數(shù)據(jù)構(gòu)造無(wú)法隨便的交換,在編碼與譯碼的過(guò)程中往往會(huì)出現(xiàn)不測(cè),例如 Date 的表現(xiàn)方式。以 .NET 來(lái)說(shuō),運(yùn)用 web service 應(yīng)該是再方便不過(guò)的選擇,只需把 asmx 檔案預(yù)備好再?gòu)?flex client 呼叫即可。 3. RemoteObject(Fl

39、ash Remoting) 技術(shù):官方支持的平臺(tái)有三種,分別是 Java Coldfusion(但實(shí)踐上Coldfusion應(yīng)該只算是java的subset,它是一種 scripting tag library)與.NET。Flex Data Services 或Macromedia ColdFusion MX 7.0.2經(jīng)過(guò)運(yùn)用AMF協(xié)議提供對(duì)Java 對(duì)象Java Beans、EJBs、POJOs的訪問(wèn)。 4,其它非官方RemoteObject技術(shù): 由于AMF格式已被非官方反編譯,所以有許多開(kāi)源的remoting替代方案: A,AMFPHP: 這是php版的remoting B,OPEN

40、AMF: java版的remoting C,F(xiàn)lap: Perl 與Python版的remoting S,F(xiàn)lashORB: 商業(yè)版的remoting替代方案,目前支持java與.net 七,HTTPService運(yùn)用plaine text format的傳輸方式,經(jīng)過(guò)xml, loadVars, loadVariables 等方式 外部XML讀取 Actionscript 3.0 的賣點(diǎn)之一,就是加強(qiáng)XML讀取的方便性,讀取外部XML是常用的前後端整合手段,而XML節(jié)點(diǎn)的操作,比之前AS2用DOM更直觀,可以直接運(yùn)用標(biāo)籤與屬性名稱訪問(wèn)節(jié)點(diǎn)。 主要參考章節(jié): Reading external

41、XML documents Traversing XML structures Lesson 6: RETRIEVING XML DATA (37 min) 1. Setting Up an XML Data Project & Setting Service 2. Setting Up a DataGrid to Display XML Data 3. Adding a Label Control to a DataGrid 4. Using an ArrayCollection 5. Examining a Data Structure in Debugging Mode 6. Utili

42、zing Data Returned in an Event Object 7. Using the Service Class to Catch Faults 8. Creating a Cross Domain Security File Lesson 13: MANIPULATING XML (34 min) 1. Manipulating Client Side Data Using E4X Syntax 2. Creating a Tree Control to Display the XML Data 3. Adding a Change Event to Display Data

43、 from the Tree 4. Populating the Shopping Cart with Raw XML Content 5. Working with an XML List Collection 6. Using Conditional Logic to Compare & Update Values 八,WebServiceLesson 14: USING WEB SERVICES (25 min) 1. Accessing Web Services 2. Invoking Web Services Methods & Results 3. Using a FaultHan

44、dler 4. Call Multiple Methods from One Web Service Object 5. Passing Parameters to Web Services 九,F(xiàn)lex Data ServicesFDS (Data Service, Messaging) Flex Data Service 是 Flex 2 里新出現(xiàn)的技術(shù),主要目地是希望提供更自動(dòng)的方法來(lái)讓 client 與 server 交換資料,它的中心實(shí)踐上依然是 AMF 與 RTMP (對(duì),就是 Flash Media Server 用的那種),部份功能也與 FMS 重疊,但它著重在 Data Sh

45、aring 與 Exchange 這部份。 目前 FDS 只需 Java 的版本,也就是 server 端要用 java 寫,但 Adobe 聲稱未來(lái)會(huì)有 FDS for .NET 版。不過(guò)好音訊是,有一家叫 theMidnightCoders 的公司搶先推出了 FDS 兼容版本,不但同時(shí)支持 AMF0 與 AMF3,更支持部份 FDS 的功能(主要是資料同步的部份,與server端的沖突處置與資料儲(chǔ)存)。 以 .NET 來(lái)說(shuō),付費(fèi)的選擇中 weborb 算是目前最優(yōu)的選擇,價(jià)錢只需官方版的一半,但功能更完好;而免錢的選擇那么當(dāng)非 Fluorine 莫屬。 功能描畫:假設(shè)他有Flex Data

46、 services,他可以發(fā)布一組MXML和AS文件,F(xiàn)lex Data Services可以在收到Http懇求前,把他的MXML和AS文件編譯成Swf文件。 Flex執(zhí)行以下步驟: 1 編譯MXML并產(chǎn)生一個(gè)SWF文件 2 貯藏已編譯的MXML文件 3 向安戶端前往SWF文件 發(fā)布他的程序方法一:發(fā)布一個(gè)SWF文件 訪問(wèn)方法:hostname/path/filename.swf 方法二:發(fā)布MXML和AS文件 訪問(wèn)方法:hostname/path/filename.mxml FDS在他的Java效力器上或者Java容器內(nèi)運(yùn)轉(zhuǎn)。以保證在以下幾個(gè)特征領(lǐng)域的廣泛性 1多個(gè)客戶端的數(shù)據(jù)共享 1 支持

47、C2C的數(shù)據(jù)通訊 2 效力器端數(shù)據(jù)添加 3 安戶端訪問(wèn)效力器資源的證明 4 數(shù)據(jù)效力日志 2提高RPC的廣泛性 十,其它RemoteObject技術(shù)現(xiàn)有許多非官方的開(kāi)源RemoteObject(Flash Remoting)技術(shù),流行的效力端Java、Php、.Net、Perl/Python、Ruby技術(shù)Flex都已打通,您可以直接在Flex/Flash中經(jīng)過(guò)RemoteObject直接調(diào)用 A,AMFPHP: Flash和PHP的整合 AMFPHP B,AMF.NET: Flex調(diào)用不同參數(shù)類型的.Net WebMethod C,AMF:Perl D,RubyAmf E,與JAVA: F,和

48、ASP的整合:Flash2ASP是能自動(dòng)生成ASP和AS代碼的工具。雖然Flash2ASP作后臺(tái)速度不如AMFphp,但由于國(guó)內(nèi)ASP資源豐富,而且Flash2ASP教程文檔詳細(xì),也可作為一個(gè)選擇。 在線版 闡明圖 55分鐘詳細(xì)運(yùn)用方法以及留言簿范例視頻教程 本地運(yùn)轉(zhuǎn)版下載(exe) 詳細(xì)情況 十一, 創(chuàng)建自定義組件1, Flex是由as類構(gòu)造實(shí)現(xiàn)的。類構(gòu)造包含了組件類,管理類,數(shù)據(jù)效力類,和其他用來(lái)實(shí)現(xiàn)flex功能的類。以下圖展現(xiàn)的是類構(gòu)造中flex可視化組件的一部分,關(guān)于控制和容器的部分: 一切的可視化組件承繼自UIComponent as類。Flex中非可視化組件也是依托as類構(gòu)造來(lái)實(shí)現(xiàn)的。大部分的非可視化組件都是Validator,F(xiàn)ormatter,或者是Effect 類。 經(jīng)過(guò)運(yùn)用mxml和as言語(yǔ)擴(kuò)展Flex類構(gòu)造來(lái)創(chuàng)建自定義的組件。組件都承繼了父類的屬性,方法,行為,風(fēng)格和效果。 經(jīng)過(guò)as創(chuàng)建一個(gè)flex組件時(shí),必需承繼自一個(gè)flex類。類的稱號(hào)必需和類文件的稱號(hào)一樣。子類承繼了父類的一切屬性的和方法。在mxml中運(yùn)用這個(gè)組件時(shí),經(jīng)過(guò)運(yùn)用類稱號(hào)的標(biāo)簽來(lái)援用。例如,類稱號(hào)是myASButton,文件名那么為myASButton.as,在mxml中運(yùn)用標(biāo)簽來(lái)運(yùn)用組件。 在經(jīng)過(guò)mxml創(chuàng)建

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論