組件 - 對數(shù)據(jù)的簡單封裝
組件(Component)是對數(shù)據(jù)和方法的簡單封裝。C++Builder中,一個組件就是一個從TComponent派生出來的特定對象。組件可以有自己的屬性和方法。屬性是組件數(shù)據(jù)的簡單訪問者。方法則是組件的一些簡單而可見的功能。使用組件可以實現(xiàn)拖放式編程、快速的屬性處理以及真正的面向?qū)ο蟮脑O(shè)計。VCL和CLX組件是C++Builder系統(tǒng)的核心。

定義
產(chǎn)品中具有獨立結(jié)構(gòu)和單獨用途的成組單元。
基本釋義
組件,zǔjiàn
1.[assembly]∶供裝配整臺機器、構(gòu)件或元件的零件組合
2.[module;package]∶在電子或機械設(shè)備中組裝在一起形成一個功能單元的一組元件
3.[unit]∶組裝產(chǎn)品 - 如書櫥或碗櫥時所組合的通?;蚨嗷蛏僦貜?fù)的部分
4.[section]∶可被組裝或被重新組裝的幾個部件之一
(Component)應(yīng)用
使用現(xiàn)成的組件來開發(fā)應(yīng)用程序時,組件工作在兩種模式下:設(shè)計時態(tài)和運行時態(tài)。
在設(shè)計時態(tài)下,組件顯示在C++Builder窗體編輯器下的一個窗體中。設(shè)計時態(tài)下組件的方法不能被調(diào)用,組件不能與最終用戶直接進行交互操作,也不需要實現(xiàn)組件的全部功能。
在運行狀態(tài)下,組件工作在一個確實已經(jīng)運行的應(yīng)用程序中。組件必須正確地將自身表示出來,它需要對方法的調(diào)用進行處理并實現(xiàn)與其他組件之間有效的協(xié)同工作。
設(shè)計時態(tài)下所有的組件在窗體中都是可見的,但在運行時態(tài)下不一定可見。如TTable、TQuery和TDataSet在運行時態(tài)下就不可見,但他們均完成了重要的功能。
例:Flash組件應(yīng)用與開發(fā)
(一)、Flash組件概述
組件是帶有參數(shù)的電影剪輯,這些參數(shù)可以用來修改組件的外觀和行為。每個組件都有預(yù)定義的參數(shù),并且它們可以被設(shè)置。每個組件還有一組屬于自己的方法、屬性和事件,它們被稱為應(yīng)用程序程接口(Application Programming Interface,API)。使用組件,可以使程序設(shè)計與軟件界面設(shè)計分離,提高代碼的可復(fù)用性。Flash MX 2004或Flash MX Professional 2004中包含的組件不是FLA文件,而是SWC文件。SWC是用于組件的Macromedia文件格式。庫項目中的電影剪輯可以被預(yù)編譯成swf文件。這樣可以縮短影片測試和發(fā)布的執(zhí)行時間。將SWC文件拷貝到First RunComponents目錄后,該組件便會出現(xiàn)在“組件”面板中。
(二)、組件基類
Flash自帶的組件都位于mx.controls包中。組件直接或間接繼承于UIComponent類,UIComponent類對UIObject類做了擴展,而UIObject類又是MovieClip類的子類。MovieClip類不屬于任何包,定義文件位于FlashInstalDirenFirst RunClasses目錄。UIComponent類和UIObject類都位于mx.core包中,定義文件位于FlashInstalDirenFirst RunClassesmxcore目錄。
UIObject類對MovieClip類進行封裝,所有Flash V2組件都可以共享它的方法、屬性和事件。UIObject類使組件在樣式、事件和縮放比例調(diào)整上得到了實現(xiàn)。它提供了動態(tài)創(chuàng)建刪除組件的方法:
·createObject方法:直接調(diào)用attachMovie函數(shù),返回一個MovieClip類型的引用。
·createClassObject方法:調(diào)用createObject方法,創(chuàng)建一個指定類的組件實例,并返回所創(chuàng)建的組件的引用。
·createEmptyObject方法:創(chuàng)建一個空的UIObject實例。
·destroyObject方法:使用delete語句刪除已經(jīng)創(chuàng)建的組件實例。
UIObject還封裝了其它的一些方法,包括:
·redraw方法:在當(dāng)前幀重新繪制組件。
·invalidate方法:標(biāo)記組件,使之在下一個幀間隔重新繪制。
·move方法:把組件移動到指定位置。
·setSize方法:設(shè)置組件大小。
·setSkin方法:設(shè)置組件皮膚。
·getStyle方法:獲取樣式信息。
UIObject類的屬性除了scaleX和scaleY外,其它都是只讀屬性,使用時需要注意。所以如果要在運行時調(diào)整組件外觀,就必須使用UIObject類的方法。對于只讀屬性的賦值是無效的,即使是對非只讀屬性的賦值,有時也會造成組件在外觀顯示上的差錯。UIObject類還定義了一系列的事件,包括加載事件(load)、卸載事件(unload)、移動事件(move)、重繪事件(draw)和大小調(diào)整事件(resize)。
利用UIObject類的組件創(chuàng)建方法,可以在運行時創(chuàng)建組件實例。
UIComponent類從UIObject類繼承,它并不是一個可視的組件。和UIObject類一樣,所有Flash V2組件都可以共享它的方法和屬性。它實現(xiàn)了組件的焦點獲取、鍵盤輸入,組件的禁用和啟用以及組件的按布局調(diào)整自動大小。
UIComponent類的主要方法有:
·getFocus方法:利用焦點管理器(Selection)返回一個當(dāng)前獲取焦點的對象的引用。
·setFocus方法:使組件獲取焦點。
UIComponent類的enabled屬性指定組件實例是否可用;tabIndex屬性指定組件的焦點獲取順序。UIComponent類還定義一系列焦點和鍵盤事件:焦點獲取事件(focusIn),焦點轉(zhuǎn)移事件(focusOut)、鍵盤按下事件(keyDown)和鍵盤釋放事件(keyUp)。
(三)、Flash V2組件的基本使用方法
在Flash MX 2004和Flash MX Professional 2004自帶了一套組件稱為Flash V2組件,它是從Flash MX的V1組件升級而來的,V1組件和V2組件盡量不要一起使用以免發(fā)生一些錯誤。V2組件支持實時預(yù)覽,使開發(fā)者在編輯狀態(tài)下就能看到組件的外觀效果。開發(fā)者可以自行設(shè)置是否需要實時預(yù)覽和實時預(yù)覽的模式,以節(jié)省計算機資源。在ControlàEnable Live Preview菜單設(shè)置是否使用實時預(yù)覽,在ViewàPriview Mode菜單選擇預(yù)覽模式。組件實質(zhì)上是一些被編譯好的電影剪輯,其格式為SWC。SWC文件類似與Zip文件,可以使用一般的解壓縮程序進行解壓查看其內(nèi)容。電影剪輯可以在編輯環(huán)境中直接發(fā)布為組件,也可以直接編譯存儲為swc格式的組件文件,便于其他開發(fā)者使用。同樣,開發(fā)者也可以從外部導(dǎo)入組件。
使用組件,必須把組件面板中所需要的組件拖到舞臺(Stage),使組件出現(xiàn)在庫面板。這樣組件就可以象普通的庫項目一樣被使用。使用腳本可以動態(tài)的創(chuàng)建組件實例,運行時創(chuàng)建組件可以有三個方法:createObject - 、creatClassObject - 和attachMovie - 。attachMovie - 是MovieClip類的方法,createObject - 和creatClassObject - 是UIObject類方法,但事實上它們都是對attachMovie - 的直接或間接調(diào)用。
組件被添加后可以在屬性或參數(shù)面板中直接設(shè)置組件的參數(shù)。另外還要為組件定義事件,最簡單的方法是使用on - eventName進行定義。另外還可以使用偵聽器和事件處理函數(shù)等定義組件事件的處理方法。組件的事件定義比較靈活,使用何種方式定義取決與個人的習(xí)慣與偏好。當(dāng)事件發(fā)生時,組件會廣播一個Object類型的事件參數(shù),該參數(shù)中包括了事件發(fā)生對象和事件類型的信息。另外,使用深度管理器(DepthManager)可以對組件進行深度管理。
Flash組件最大的特點是開發(fā)者可以自定義組件,尤其是界面元素的自定義,使其更具有吸引力。V2組件有它自己的一套默認(rèn)界面方案,稱為主題(Theme)。主題包括兩個方面:樣式(Style)和外觀(Skin)。UIObject類的setStyle - 和getStyle - 方法可以獲取和設(shè)置組件的樣式。樣式的設(shè)置比較簡單,主要有以下三種方式:
·直接設(shè)置屬性:
T.color=0xff5567;
·使用簡單的setStyle - 名值對方法自定義樣式:
instanceName.setStyle - "property", value;
·把樣式對象與setStyle - 方法結(jié)合使用來自定義樣式:
//創(chuàng)建一個樣式對象
var styleObj = new mx.styles.CSSStyleDeclaration;
//刻畫樣式細(xì)節(jié)
//……
styleObj.fontSize = 18;
//把樣式應(yīng)用到組件實例
b.setStyle - "styleName", styleObj;
樣式的級別包括4個層次:全局樣式,應(yīng)用于所有組件;組件類單獨的默認(rèn)樣式,應(yīng)用于某一類的組件;自定義樣式;直接設(shè)置組件實例的屬性。對于不同級別的樣式Flash按照一定的順序分別把這些樣式應(yīng)用到組件。
首先,F(xiàn)lash查找組件實例上的樣式屬性,如果實例上沒有直接設(shè)置樣式,F(xiàn)lash將查看實例的styleName屬性,確定是否向它分配了樣式聲明。如果styleName屬性沒有被分配樣式聲明,F(xiàn)lash將查找默認(rèn)類樣式聲明上的屬性。如果沒有類樣式聲明,并且屬性沒有繼承它的值,則將檢查 _global樣式聲明。如果屬性未在 _global樣式聲明中定義,則該屬性為undefined。
另外,如果沒有類樣式聲明,但屬性確實繼承了它的值,F(xiàn)lash將查找該實例父級上的屬性。如果屬性未在父實例上定義,F(xiàn)lash將檢查父實例的styleName屬性;如果未定義該屬性,F(xiàn)lash將繼續(xù)查看父實例,直到 _global級別。如果屬性未在 _global樣式聲明中定義,則該屬性為undefined。
另一方面,為了更好的使用組件,還需要修改或重新定義組件外觀。Flash V2的外觀定義文件位于FlashInstralDirenFirst RunComponentFLA文件夾下。在修改外觀時,需要把原始的外觀定義文件作為外部庫導(dǎo)入(FileàOpen External Library),并把外部庫中的外觀定義庫項目拖到當(dāng)前文檔的庫中,外觀庫項目通常都是電影剪輯(MovieClip)。每一個組件外觀定義庫項目文件夾中都包含一個States文件夾,其中定義了組件在不同狀態(tài)下的外觀,每一個狀態(tài)都指定了一個鏈接名(linkageName)作為腳本引用,如果修改了這個名稱,則會使組件在該狀態(tài)下的外觀加載發(fā)生錯誤。在組件的類文件中,每一個狀態(tài)都使用一個字符串屬性指定其外觀庫項目的鏈接名,如果要重新定義組件某一狀態(tài)下的外觀,只要在腳本中修改這個字符串屬性的值就可以了,當(dāng)然首先必須存在可鏈的新的外觀庫項目。
了解了這樣一個組件外觀機制以后,組件外觀的修改就變的非常簡單。其關(guān)鍵就是修改或重新定義一組新的外觀庫項目并指定其鏈接名,然后修改組件類文件中指定組件外觀的屬性。開發(fā)者可以在組件實例的初始化事件(initialize)中修改組件實例的外觀。修組件所有實例外觀的方法比較多,例如_root的第一幀使用ClassName.prototype.stateName=value語句,該語句也可以直接在#initclip和#endinitclip代碼塊中使用;另外還可以使用類繼承的方式,在組件初始化時就為組件外觀鏈接屬性指定新的值,這里也需要用到#initclip、#endinitclip代碼塊。#initclip和#endinitclip是Flash的編譯器命令,作為初始化代碼塊的開始標(biāo)記和結(jié)束標(biāo)記。只要符號(symbol)被定義,那么初始化代碼就被先于第一幀執(zhí)行,而且緊執(zhí)行一次。所以在這個代碼塊中,可以為整個組件類指定不同狀態(tài)下的外觀。
創(chuàng)建
創(chuàng)建組件就是自行設(shè)計制作出新的組件。
設(shè)計組件是一項繁重的工作。自行開發(fā)組件與使用組件進行可視化程序開發(fā)存在著極大的不同,要求程序員熟知原有的VCL類庫結(jié)構(gòu),精通面向?qū)ο蟪绦蛟O(shè)計。
設(shè)計組件是一項艱苦的工作。對于組件的開發(fā)者,組件是純粹的代碼。組件的開發(fā)不是一個可視化的開發(fā)過程,而是用C++或Object Pascal嚴(yán)格編制代碼的工作。實際上,創(chuàng)建新組件使我們回到傳統(tǒng)開發(fā)工具的時代。雖然這是一個復(fù)雜的過程,但也是一個一勞永逸的過程。
創(chuàng)建組件的最大意義在于封裝重復(fù)的工作,其次是可以擴充現(xiàn)有組件的功能。
組件創(chuàng)建過程包括設(shè)計、開發(fā)、調(diào)試(就是所謂的3D's)工作,然后是組件的使用。
組件開發(fā)者應(yīng)該掌握的三項主要內(nèi)容是:屬性、事件和方法。
1、組件源文件
"組件"面板中提供的組件都是預(yù)編譯過的SWC剪輯。同時還提供了源Flash文檔 - FLA(其中包括的是這些組件的圖形)和源ActionScript類文件 - AS(其中包含的是這些組件的代碼),以便于您在創(chuàng)建自已的自定義組件時使用。第2版組件的源文件隨Macromedia?Flash一起安裝。在構(gòu)建自己的組件之前,打開并查看其中部分文件,嘗試去了解這些文件的結(jié)構(gòu),會對您有所幫助。RadioButton組件就是較為簡單的組件的示例,您可能應(yīng)首先研究該組件。StandardComponents.fla的庫中的所有組件都是元件。每個元件都鏈接到一個ActionScript類。它們的位置如下:
FLA文件源代碼
在Windows中:C:Program FilesMacromediaFlash 8語言ConfigurationComponentFLAStandardComponents.fla。
在Macintosh上:HD/Applications/Macromedia Flash 8/Configuration/ComponentFLA/StandardComponents.fla
ActionScript類文件
在Windows中:C:Program FilesMacromediaFlash 8語言First RunClassesmx
在Macintosh上:HD/Applications/Macromedia Flash 8/First Run/Classes/mx
2、組件結(jié)構(gòu)概述
組件由Flash - FLA文件和ActionScript - AS文件組成。您可以選擇創(chuàng)建其它文件(例如,圖標(biāo)和.swd調(diào)試文件),并將其與組件一起打包,但所有組件都需要一個FLA文件和一個ActionScript文件。完成組件開發(fā)后,需要將它導(dǎo)出為SWC文件。
Flash - FLA文件、ActionScript - AS文件和SWC文件
FLA文件包含一個影片剪輯元件,該元件必須在"鏈接屬性"和"組件定義"對話框中鏈接到AS文件。
影片剪輯元件有兩個幀和兩個圖層。第一個圖層是Actions圖層,它的第一幀上有一個stop - 全局函數(shù)。第二個圖層是Assets圖層,它有兩個關(guān)鍵幀:第一幀包含一個邊框,第二幀包含所有其它資源,其中包括組件使用的圖形和基類。
指定組件的屬性和方法的ActionScript代碼位于單獨的ActionScript類文件中。此類文件還聲明組件的擴展的類(如果有)。AS類文件的名稱為組件的名稱加上".as"擴展名。例如,MyComponent.as包含MyComponent組件的源代碼。
最好將組件的FLA和AS文件保存在同一文件夾并將這兩個文件指定為相同的名稱。如果將AS文件保存在其它文件夾中,則必須確認(rèn)該文件夾在類路徑中,以便FLA文件能夠找到它。有關(guān)類路徑的詳細(xì)信息,請參閱"學(xué)習(xí)Flash中的ActionScript?2.0"中的類。
3、構(gòu)建第一個組件
在本節(jié)中,將構(gòu)建一個Dial組件。已完成的組件文件Dial.fla、Dial.as和DialAssets.fla位于計算機上的以下示例文件夾中:
在Windows中:C:Program?FilesMacromediaFlash?8Samples?and?TutorialsSamplesComponentsDialComponent文件夾。
在Macintosh上:HD/Applications/Macromedia?Flash?8/Samples?and?Tutorials/Samples/Components/DialComponent文件夾。
Dial組件是一個電位計,類似于測量電壓差的電位計。用戶可以單擊并拖動指針來更改指針位置。Dial組件的API具有一個value屬性,可用來獲取和設(shè)置指針的位置。
4、選擇父類
創(chuàng)建組件時,首先要確定是否擴展某個第2版類。如果選擇擴展某個第2版類,則可以擴展某個組件類(例如,Button、CheckBox、ComboBox、List等)或某個基類(UIObject或UIComponent)。除Media組件之外,所有其它組件類都擴展基類;如果擴展組件類,該類也會自動從基類繼承。
兩個基類為組件提供了常見功能。通過擴展這些類,組件一開始即具備一組基本的方法、屬性和事件。
在第2版框架中,您無需創(chuàng)建UIObject子類、UIComponent子類或任何其它類。即使組件類直接繼承自MovieClip類,也可以使用許多強大的組件功能:導(dǎo)出到SWC文件或編譯剪輯、使用內(nèi)置實時預(yù)覽、查看可檢查屬性等等。但是,如果要將組件用于Macromedia第2版組件,并要使用管理器類,就需要擴展UIObject或UIComponent。
基于Macromedia?Component?Architecture第2版的組件源自UIObject類,該類是MovieClip類的子類。MovieClip類是Flash中可以在屏幕上表示可視對象的所有類的基類。
UIObject添加用于處理樣式和事件的方法。它在加載和卸載時(load和unload)、布局更改時(move、resize)以及隱藏或顯示時(hide和reveal),都會在繪制(draw事件等效于MovieClip.onEnterFrame事件)之前將事件發(fā)送到它的偵聽器。
UIObject另外提供只讀變量來確定組件的位置和大?。╳idth、height、x、y),并提供move - 和setSize - 方法來改變對象的位置和大小。
UIObject類實現(xiàn)以下功能:
樣式
事件
按縮放比例調(diào)整大小
了解UIComponent類
UIComponent類是UIObject的子類(請參閱"組件語言參考"中的UIComponent類)。它是處理用戶交互(鼠標(biāo)和鍵盤輸入)的所有組件的基類。UIComponent類允許組件執(zhí)行以下操作:
接收焦點和鍵盤輸入
啟用和禁用組件
按布局調(diào)整大小
關(guān)于擴展其它第2版類
為了能夠更方便地構(gòu)造組件,可以擴展任何類的子類,這樣也就不需要直接擴展UIObject或UIComponent類。如果擴展任何其它第2版組件類(Media組件除外),默認(rèn)情況下也會擴展UIObject和UIComponent。您可以通過擴展"組件"字典中列出的任何組件類來創(chuàng)建新組件類。
例如,如果要創(chuàng)建一個組件,其行為與Button組件的行為幾乎相同,就可以擴展Button類,而不必從基類重新創(chuàng)建Button類的所有功能。
下圖顯示了第2版組件的層次結(jié)構(gòu):
第2版組件層次結(jié)構(gòu)
此文件的FlashPaper版本可在Flash安裝目錄的以下位置找到:Flash?8Samples?and?TutorialsSamplesComponentsarch_diagram.swf。
關(guān)于擴展MovieClip類
您可以選擇不擴展第2版類,而讓組件直接繼承ActionScript?MovieClip類。但是,如果需要UIObject和UIComponent的任何功能,則必須親自構(gòu)建。您可以打開UIObject和UIComponent類 - First?Run/Classes/mx/core來檢查它們的構(gòu)造方式。
5、創(chuàng)建組件影片剪輯
若要創(chuàng)建一個組件,必須創(chuàng)建一個影片剪輯元件并將它鏈接到該組件的類文件。
影片剪輯有兩個幀和兩個圖層。第一個圖層是Actions圖層,它的第一幀上有一個stop - 全局函數(shù)。第二個圖層是Assets圖層,它有兩個關(guān)鍵幀。第一幀包含一個邊框或充當(dāng)最終圖片的占位符的任意圖形。第二幀包含所有其它資源,包括組件使用的圖形和基類。
插入新的影片剪輯元件
所有組件都是MovieClip對象。要創(chuàng)建新組件,首先必須將新元件插入新的FLA文件中。
添加新組件元件:
在Flash中,創(chuàng)建空白的Flash文檔。
選擇"插入">"新建元件"。
顯示"創(chuàng)建新元件"對話框。
輸入元件名稱。為組件命名,方法是將組件中每個單詞的第一個字母更改為大寫字母(例如 MyComponent)。
選擇"影片剪輯"行為。
單擊"高級"按鈕顯示高級設(shè)置。
選擇"為ActionScript導(dǎo)出",取消選擇"在第一幀導(dǎo)出"。
輸入鏈接標(biāo)識符。
在"AS?2.0類"文本框中,輸入ActionScript?2.0類的完全限定路徑。
類名稱應(yīng)與顯示在"組件"面板中的組件名稱相同。例如,Button組件的類為mx.controls.Button。
注意
不要包含文件擴展名;"AS?2.0類"文本框指向類的打包位置,而不是該文件的文件系統(tǒng)名稱。
如果ActionScript文件位于包內(nèi),必須包含該包的名稱。此值可以是類路徑的相對路徑,也可以是包的絕對路徑(例如mypackage.MyComponent)。
大多數(shù)情況下,應(yīng)取消選中"在第一幀導(dǎo)出"(默認(rèn)選中該選項)。有關(guān)詳細(xì)信息,請參閱組件開發(fā)檢查列表。
單擊"確定"。
Flash將元件添加到庫中,然后切換到元件編輯模式。在此模式下,元件的名稱顯示于舞臺左上角的上方,并且有一個十字線表明該元件的注冊點。
您現(xiàn)在就可以編輯該元件以創(chuàng)建一個組件。請參閱編輯影片剪輯。
編輯影片剪輯
在創(chuàng)建新元件并為其定義鏈接后,即可在該元件的時間軸中定義組件的資源。
組件的元件應(yīng)有兩個圖層。本節(jié)說明應(yīng)該插入哪些圖層,應(yīng)該在這些圖層上添加哪些內(nèi)容。
若要編輯影片剪輯,請執(zhí)行以下操作:
將圖層1重命名為動作,然后選擇第一幀。
打開"動作"面板,然后添加stop - 函數(shù),如下所示:stop - ;
不要向此幀添加任何圖形資源。
添加一個名為Assets的圖層。
在Assets圖層上,選擇第二幀并插入一個空白關(guān)鍵幀。
現(xiàn)在該圖層上有兩個空白關(guān)鍵幀。
請執(zhí)行以下操作之一:
·如果組件具有定義邊界區(qū)域的可視資源,則將這些元件拖到第一幀中并進行適當(dāng)安排。
·如果組件在運行時創(chuàng)建其所有可視資源,請將一個BoundingBox元件拖到舞臺上第一幀中,適當(dāng)調(diào)整其大小,然后將實例命名為boundingBox_mc。該元件位于Configuration/ComponentFLA文件夾中的StandardComponents.fla的庫中。
如果要擴展現(xiàn)有組件,請將該組件的一個實例和任何其它基類放在Assets圖層的第二幀中。
為此,請從"組件"面板中選擇該元件并將它拖到舞臺上。如果要擴展一個基類,請打開Configuration/ComponentFLA文件夾中的StandardComponents.fla,然后將該類從庫中拖到舞臺上。
注意
將UIComponent拖到組件庫時,會更改庫中的文件夾層次結(jié)構(gòu)。如果打算再次使用庫,或?qū)⑺糜谄渌M件組(如第2版組件),應(yīng)重新組織文件夾層次結(jié)構(gòu),以便與StandardComponents.fla庫匹配,從而使庫組織有序,避免元件重復(fù)。
在組件的Assets圖層的第二幀添加由該組件使用的所有圖形資源。
組件所使用的任何資源(無論是其它組件還是位圖之類的媒體)都應(yīng)具有一個放置在Assets圖層的第二幀中的實例。
完成的元件看起來應(yīng)與下圖相似:
將影片剪輯定義為組件
影片剪輯元件必須在"組件定義"對話框中鏈接到ActionScript類文件。這是Flash了解在何處查找組件元標(biāo)記的方式。(有關(guān)元標(biāo)記的詳細(xì)信息,請參閱添加組件元數(shù)據(jù)。)您也可以在"組件定義"對話框中選擇其它選項。
將影片剪輯定義為組件:
在庫中選擇影片剪輯,然后從"庫"上下文菜單中選擇"組件定義"(Windows:右鍵單擊;Mac:按住Control鍵單擊)。
必須輸入一個AS?2.0類。
如果該類在包中,則輸入完整的包名稱。
如果需要,可以在"組件定義"對話框中指定其它選項:
單擊加號 - +按鈕可定義參數(shù)。
此為可選操作。最好的做法是在組件的類文件中使用元數(shù)據(jù)Inspectable標(biāo)記來指定參數(shù)。如果未指定ActionScript?2.0類,則在這是一個在"組件"檢查器中播放的SWF文件。您可以將它嵌入組件FLA文件或瀏覽到一個外部SWF文件。
指定實時預(yù)覽。
這是一個外部或嵌入的SWF文件。此處無需指定實時預(yù)覽;將一個邊框添加到組件影片剪輯,F(xiàn)lash即會為您創(chuàng)建實時預(yù)覽。請參閱創(chuàng)建組件影片剪輯。
輸入描述。
在Flash?MX?2004中,由于"參考"面板已刪除,因此不建議使用"描述"字段。提供此字段目的在于以Flash?MX格式保存FLA文件時的向后兼容性。
選擇圖標(biāo)。
此選項指定一個PNG文件來用作組件的圖標(biāo)。如果在ActionScript?2.0類文件中指定IconFile元數(shù)據(jù)標(biāo)記(最佳做法),則會忽略該字段。
選擇或取消選擇"實例中參數(shù)已鎖定"。
如果取消選擇此選項,用戶則可以向每個組件實例添加不同于組件參數(shù)的參數(shù)。通常應(yīng)選擇此設(shè)置。此選項提供與Flash?MX的向后兼容性。
指定顯示在"組件"面板中的工具提示。
6、創(chuàng)建ActionScript類文件
所有組件元件都鏈接到ActionScript?2.0類文件。(有關(guān)鏈接的信息,請參閱創(chuàng)建組件影片剪輯。)
要編輯ActionScript類文件,您可以使用Flash、任何文本編輯器,也可以使用任何"集成開發(fā)環(huán)境" - IDE。
外部ActionScript類擴展其它類(無論該類是第2版組件、第2版基類還是ActionScript?MovieClip類)。您應(yīng)擴展所創(chuàng)建的功能與要創(chuàng)建的組件最類似的類。只能從一個類繼承(擴展)。ActionScript?2.0不允許多繼承。
本節(jié)包含以下主題:
組件類文件的簡單示例
組件類文件概述
定義類及其超類
標(biāo)識類、元件和所有者名稱
定義變量
使用getter/setter方法定義參數(shù)
添加組件元數(shù)據(jù)
定義組件參數(shù)
關(guān)于核心函數(shù)
發(fā)送事件
關(guān)于指定外觀
關(guān)于樣式
組件類文件的簡單示例
下面是類文件的一個簡單示例,該類文件名為MyComponent.as。如果要創(chuàng)建此組件,應(yīng)將該類文件鏈接到Flash中的組件影片剪輯。
此示例包含從UIComponent類繼承的組件MyComponent至少應(yīng)有的一組導(dǎo)入、方法和聲明。MyComponents.as文件保存在myPackage文件夾中。
【Event - "eventName"】
//導(dǎo)入包。
import?mx.core.UIObject;
//聲明類并從父類擴展。
class?mypackage.MyComponent?extends?UIObject{
//標(biāo)識此類所綁定到的元件名稱。
static?var?symbolName:String="mypackage.MyComponent";
//標(biāo)識元件所有者的完全限定包名稱。
static?var?symbolOwner:Object=Object - mypackage.MyComponent;
//提供className變量。
var?className:String="MyComponent";
//定義一個空構(gòu)造函數(shù)。
function?MyComponent - {
}
//調(diào)用父級的init - 方法。
//隱藏邊框,該邊框
//僅在創(chuàng)作時使用。
function?init - :Void{
super.init - ;
boundingBox_mc.width=0;
boundingBox_mc.height=0;
boundingBox_mc.visible=false;
}
function?createChildren - :Void{
//調(diào)用createClassObject來創(chuàng)建子對象。
size - ;
invalidate - ;
}
function?size - {
//編寫處理大小的代碼。
super.size - ;
invalidate - ;
}
function?draw - {
//編寫處理可視化表示形式的代碼。
super.draw - ;
}
}
組件類文件概述
以下是介紹如何為組件類創(chuàng)建ActionScript文件的常規(guī)過程。根據(jù)所創(chuàng)建組件類型的不同,某些步驟是可選步驟。
編寫組件類文件:
(可選)導(dǎo)入類。(請參閱導(dǎo)入類)。
執(zhí)行這一步驟,則無需寫出包(例如,使用Button而不是mx.controls.Button)即可引用類。
使用class關(guān)鍵字定義類;使用extend關(guān)鍵字?jǐn)U展父類。(請參閱定義類及其超類)。
定義symbolName、symbolOwner和className變量。(請參閱標(biāo)識類、元件和所有者名稱)。
只有第2版組件才需要這些變量。
定義成員變量。(請參閱定義變量)。
這些變量可用于getter/setter方法。
定義一個構(gòu)造函數(shù)。(請參閱關(guān)于構(gòu)造函數(shù))。
定義init - 方法。(請參閱定義init - 方法)。
如果類擴展的是UIComponent,則創(chuàng)建類時會調(diào)用此方法。如果類擴展的是MovieClip,則從構(gòu)造函數(shù)調(diào)用此方法。
定義createChildren - 方法。(請參閱定義createChildren - 方法)。
如果類擴展的是UIComponent,則創(chuàng)建類時會調(diào)用此方法。如果類擴展的是MovieClip,則從構(gòu)造函數(shù)調(diào)用此方法。
定義size - 方法。(請參閱定義size - 方法)。
如果類擴展的是UIComponent,則調(diào)整組件大小時調(diào)用此方法。此外,在創(chuàng)作時調(diào)整組件的實時預(yù)覽大小時也會調(diào)用此方法。
定義draw - 方法。(請參閱關(guān)于無效)。
如果類擴展的是UIComponent,則組件無效時調(diào)用此方法。
添加一個元數(shù)據(jù)標(biāo)記和聲明。(請參閱添加組件元數(shù)據(jù))。
添加標(biāo)記和聲明可使getter/setter屬性顯示在Flash的"屬性方法。(請參閱使用getter/setter方法定義參數(shù))。
(可選)為組件中使用的每個外觀元素/鏈接創(chuàng)建變量。(請參閱關(guān)于指定外觀)。
執(zhí)行這一步驟,用戶則可通過更改組件中的參數(shù)來設(shè)置不同的外觀元素。
8、在組件內(nèi)組合現(xiàn)有組件
在本節(jié)中,您將構(gòu)建一個可以組合Label、TextInput和Button組件的簡單的LogIn組件。本教程演示如何在新組件中通過添加未經(jīng)編譯的Flash - FLA庫元件來組合現(xiàn)有組件。已完成的組件文件LogIn.fla、LogIn.as和LogIn.swf位于硬盤上的以下示例文件夾中:
在Windows中:the?C:Program?FilesMacromediaFlash?8Samples?and?TutorialsSamplesComponentsLogin?folder。
在Macintosh上:HD/Applications/Macromedia?Flash?8/Samples?and?Tutorials/Samples/Components/Login文件夾。
LogIn組件提供輸入名稱和密碼的界面。LogIn的API有兩個屬性name和password,用來設(shè)置和獲取名稱和密碼TextInput字段中的字符串值。LogIn組件還將在用戶單擊標(biāo)記為"LogIn"的按鈕時發(fā)送一個"click"事件。
創(chuàng)建LogIn?Flash - FLA文件
LogIn類文件
測試和導(dǎo)出LogIn組件
8、導(dǎo)出和分發(fā)組件
Flash將組件導(dǎo)出為組件包(SWC文件)。組件可以分發(fā)為SWC文件或FLA文件。(有關(guān)將組件作為FLA分發(fā)的信息,請參閱Macromedia?DevNet上的文章,網(wǎng)址為www.macromedia.com/support/flash/applications/creating_comps/creating_comps12.html。)
分發(fā)組件的最好方法是將它導(dǎo)出為SWC文件,這是因為SWC文件包含全部ActionScript、SWF文件以及使用組件所需的其它可選文件。如果要同時開發(fā)某個組件和使用該組件的應(yīng)用程序,則SWC文件也十分有用。
SWC文件可用于分發(fā)在Macromedia?Flash?8、Macromedia?Dreamweaver?MX?2004和Macromedia?Director?MX?2004中使用的組件。
無論開發(fā)組件的目的是為了供他人使用還是自己使用,對作為組件開發(fā)的正在進行部分的SWC文件進行測試都非常重要。例如,組件的FLA文件中不會出現(xiàn)的問題可能會在SWC文件中出現(xiàn)。
9、組件開發(fā)的最后一些步驟
組件創(chuàng)建完成并準(zhǔn)備好打包之后,即可添加圖標(biāo)和工具提示。要確保已完成所有必需的步驟,請參閱組件開發(fā)檢查列表。
本節(jié)包含以下主題:
·添加圖標(biāo)
·添加工具提示
·組件開發(fā)檢查列表
添加圖標(biāo)
您可以添加在Flash創(chuàng)作環(huán)境的"組件"面板中表示組件的圖標(biāo)。
添加組件的圖標(biāo):
·創(chuàng)建新圖像。
圖像必須為18×18像素,并且必須保存為PNG格式。它的Alpha透明度必須是8位,左上角的像素必須是透明的,以支持遮罩。
·在組件ActionScript類文件中的類定義之前添加以下定義:【IconFile - "component_name.png"】
·將圖像添加到FLA文件所在的目錄。在導(dǎo)出SWC文件時,F(xiàn)lash將在歸檔的根級包含該圖像。
添加工具提示
當(dāng)用戶將鼠標(biāo)滾到Flash創(chuàng)作環(huán)境中"組件"面板上的組件名稱或圖標(biāo)上時,工具提示就會顯示出來。
在"組件定義"對話框中可以定義工具提示??梢詮慕M件FLA文件的"庫"選項菜單訪問此對話框(Windows:右鍵單擊;Mac:按住Control鍵單擊)。
在"組件定義"對話框中添加工具提示:
在Flash中打開組件的FLA文件時,確保"庫"可見("窗口">"庫"菜單)。
單擊"庫"選項菜單(Windows:右鍵單擊;Mac:按住Control鍵單擊)。
"庫"選項菜單位于"庫"標(biāo)題欄的右側(cè),顯示為一個三條線和向下三角形的圖標(biāo)。
選擇"組件定義"選項。
在"組件定義"對話框的"選項"下,選擇"顯示在'組件'面板中"。
"工具"提示文本框即會變?yōu)榭删庉嬑谋究颉?/p>
在"工具"提示文本框中輸入組件的工具提示文本。
單擊"確定"以保存更改。
