組件

組件

對數據的簡單封裝
組件(Component)是對數據和方法的簡單封裝。C++Builder中,一個組件就是一個從TComponent派生出來的特定對象。組件可以有自己的屬性和方法。屬性是組件數據的簡單訪問者。方法則是組件的一些簡單而可見的功能。使用組件可以實現拖放式編程、快速的屬性處理以及真正的面向對象的設計。VCL和CLX組件是C++Builder系統的核心。
    中文名:組件 外文名: 所屬學科: 解釋:數據和方法的簡單封裝 核心:VCL和CLX組件是C++Builder 分類:複合,擴展,自定義

定義

産品中具有獨立結構和單獨用途的成組單元。

基本釋義

組件,zǔjiàn

1.[assembly]∶供裝配整台機器、構件或元件的零件組合

2.[module;package]∶在電子或機械設備中組裝在一起形成一個功能單元的一組元件

3.[unit]∶組裝産品(如書櫥或碗櫥)時所組合的通常或多或少重複的部分

4.[section]∶可被組裝或被重新組裝的幾個部件之一

(Component)應用

使用現成的組件來開發應用程序時,組件工作在兩種模式下:設計時态和運行時态。

在設計時态下,組件顯示在C++Builder窗體編輯器下的一個窗體中。設計時态下組件的方法不能被調用,組件不能與最終用戶直接進行交互操作,也不需要實現組件的全部功能。

在運行狀态下,組件工作在一個确實已經運行的應用程序中。組件必須正确地将自身表示出來,它需要對方法的調用進行處理并實現與其他組件之間有效的協同工作。

設計時态下所有的組件在窗體中都是可見的,但在運行時态下不一定可見。如TTable、TQuery和TDataSet在運行時态下就不可見,但他們均完成了重要的功能。

例:Flash組件應用與開發

(一)、Flash組件概述

組件是帶有參數的電影剪輯,這些參數可以用來修改組件的外觀和行為。每個組件都有預定義的參數,并且它們可以被設置。每個組件還有一組屬于自己的方法、屬性和事件,它們被稱為應用程序程接口(Application Programming Interface,API)。使用組件,可以使程序設計與軟件界面設計分離,提高代碼的可複用性。Flash MX 2004或Flash MX Professional 2004中包含的組件不是FLA文件,而是SWC文件。SWC是用于組件的Macromedia文件格式。庫項目中的電影剪輯可以被預編譯成swf文件。這樣可以縮短影片測試和發布的執行時間。将SWC文件拷貝到First RunComponents目錄後,該組件便會出現在“組件”面闆中。

(二)、組件基類

Flash自帶的組件都位于mx.controls包中。組件直接或間接繼承于UIComponent類,UIComponent類對UIObject類做了擴展,而UIObject類又是MovieClip類的子類。MovieClip類不屬于任何包,定義文件位于FlashInstalDirenFirst RunClasses目錄。UIComponent類和UIObject類都位于mx.core包中,定義文件位于FlashInstalDirenFirst RunClassesmxcore目錄。

UIObject類對MovieClip類進行封裝,所有Flash V2組件都可以共享它的方法、屬性和事件。UIObject類使組件在樣式、事件和縮放比例調整上得到了實現。它提供了動态創建删除組件的方法:

·createObject方法:直接調用attachMovie函數,返回一個MovieClip類型的引用。

·createClassObject方法:調用createObject方法,創建一個指定類的組件實例,并返回所創建的組件的引用。

·createEmptyObject方法:創建一個空的UIObject實例。

·destroyObject方法:使用delete語句删除已經創建的組件實例。

UIObject還封裝了其它的一些方法,包括:

·redraw方法:在當前幀重新繪制組件。

·invalidate方法:标記組件,使之在下一個幀間隔重新繪制。

·move方法:把組件移動到指定位置。

·setSize方法:設置組件大小。

·setSkin方法:設置組件皮膚。

·getStyle方法:獲取樣式信息。

UIObject類的屬性除了scaleX和scaleY外,其它都是隻讀屬性,使用時需要注意。所以如果要在運行時調整組件外觀,就必須使用UIObject類的方法。對于隻讀屬性的賦值是無效的,即使是對非隻讀屬性的賦值,有時也會造成組件在外觀顯示上的差錯。UIObject類還定義了一系列的事件,包括加載事件(load)、卸載事件(unload)、移動事件(move)、重繪事件(draw)和大小調整事件(resize)。

利用UIObject類的組件創建方法,可以在運行時創建組件實例。

UIComponent類從UIObject類繼承,它并不是一個可視的組件。和UIObject類一樣,所有Flash V2組件都可以共享它的方法和屬性。它實現了組件的焦點獲取、鍵盤輸入,組件的禁用和啟用以及組件的按布局調整自動大小。

UIComponent類的主要方法有:

·getFocus方法:利用焦點管理器(Selection)返回一個當前獲取焦點的對象的引用。

·setFocus方法:使組件獲取焦點。

UIComponent類的enabled屬性指定組件實例是否可用;tabIndex屬性指定組件的焦點獲取順序。UIComponent類還定義一系列焦點和鍵盤事件:焦點獲取事件(focusIn),焦點轉移事件(focusOut)、鍵盤按下事件(keyDown)和鍵盤釋放事件(keyUp)。

(三)、Flash V2組件的基本使用方法

在Flash MX 2004和Flash MX Professional 2004自帶了一套組件稱為Flash V2組件,它是從Flash MX的V1組件升級而來的,V1組件和V2組件盡量不要一起使用以免發生一些錯誤。V2組件支持實時預覽,使開發者在編輯狀态下就能看到組件的外觀效果。開發者可以自行設置是否需要實時預覽和實時預覽的模式,以節省計算機資源。在ControlàEnable Live Preview菜單設置是否使用實時預覽,在ViewàPriview Mode菜單選擇預覽模式。組件實質上是一些被編譯好的電影剪輯,其格式為SWC。SWC文件類似與Zip文件,可以使用一般的解壓縮程序進行解壓查看其内容。電影剪輯可以在編輯環境中直接發布為組件,也可以直接編譯存儲為swc格式的組件文件,便于其他開發者使用。同樣,開發者也可以從外部導入組件。

使用組件,必須把組件面闆中所需要的組件拖到舞台(Stage),使組件出現在庫面闆。這樣組件就可以象普通的庫項目一樣被使用。使用腳本可以動态的創建組件實例,運行時創建組件可以有三個方法:createObject()、creatClassObject()和attachMovie()。attachMovie()是MovieClip類的方法,createObject()和creatClassObject()是UIObject類方法,但事實上它們都是對attachMovie()的直接或間接調用。

組件被添加後可以在屬性或參數面闆中直接設置組件的參數。另外還要為組件定義事件,最簡單的方法是使用on(eventName)進行定義。另外還可以使用偵聽器和事件處理函數等定義組件事件的處理方法。組件的事件定義比較靈活,使用何種方式定義取決與個人的習慣與偏好。當事件發生時,組件會廣播一個Object類型的事件參數,該參數中包括了事件發生對象和事件類型的信息。另外,使用深度管理器(DepthManager)可以對組件進行深度管理。

Flash組件最大的特點是開發者可以自定義組件,尤其是界面元素的自定義,使其更具有吸引力。V2組件有它自己的一套默認界面方案,稱為主題(Theme)。主題包括兩個方面:樣式(Style)和外觀(Skin)。UIObject類的setStyle()和getStyle()方法可以獲取和設置組件的樣式。樣式的設置比較簡單,主要有以下三種方式:

·直接設置屬性:

T.color=0xff5567;

·使用簡單的setStyle()名值對方法自定義樣式:

instanceName.setStyle("property", value);

·把樣式對象與setStyle()方法結合使用來自定義樣式:

//創建一個樣式對象

var styleObj = new mx.styles.CSSStyleDeclaration;

//刻畫樣式細節

//……

styleObj.fontSize = 18;

//把樣式應用到組件實例

b.setStyle("styleName", styleObj);

樣式的級别包括4個層次:全局樣式,應用于所有組件;組件類單獨的默認樣式,應用于某一類的組件;自定義樣式;直接設置組件實例的屬性。對于不同級别的樣式Flash按照一定的順序分别把這些樣式應用到組件。

首先,Flash查找組件實例上的樣式屬性,如果實例上沒有直接設置樣式,Flash将查看實例的styleName屬性,确定是否向它分配了樣式聲明。如果styleName屬性沒有被分配樣式聲明,Flash将查找默認類樣式聲明上的屬性。如果沒有類樣式聲明,并且屬性沒有繼承它的值,則将檢查 _global樣式聲明。如果屬性未在 _global樣式聲明中定義,則該屬性為undefined。

另外,如果沒有類樣式聲明,但屬性确實繼承了它的值,Flash将查找該實例父級上的屬性。如果屬性未在父實例上定義,Flash将檢查父實例的styleName屬性;如果未定義該屬性,Flash将繼續查看父實例,直到 _global級别。如果屬性未在 _global樣式聲明中定義,則該屬性為undefined。

另一方面,為了更好的使用組件,還需要修改或重新定義組件外觀。Flash V2的外觀定義文件位于FlashInstralDirenFirst RunComponentFLA文件夾下。在修改外觀時,需要把原始的外觀定義文件作為外部庫導入(FileàOpen External Library),并把外部庫中的外觀定義庫項目拖到當前文檔的庫中,外觀庫項目通常都是電影剪輯(MovieClip)。每一個組件外觀定義庫項目文件夾中都包含一個States文件夾,其中定義了組件在不同狀态下的外觀,每一個狀态都指定了一個鍊接名(linkageName)作為腳本引用,如果修改了這個名稱,則會使組件在該狀态下的外觀加載發生錯誤。在組件的類文件中,每一個狀态都使用一個字符串屬性指定其外觀庫項目的鍊接名,如果要重新定義組件某一狀态下的外觀,隻要在腳本中修改這個字符串屬性的值就可以了,當然首先必須存在可鍊的新的外觀庫項目。

了解了這樣一個組件外觀機制以後,組件外觀的修改就變的非常簡單。其關鍵就是修改或重新定義一組新的外觀庫項目并指定其鍊接名,然後修改組件類文件中指定組件外觀的屬性。開發者可以在組件實例的初始化事件(initialize)中修改組件實例的外觀。修組件所有實例外觀的方法比較多,例如_root的第一幀使用ClassName.prototype.stateName=value語句,該語句也可以直接在#initclip和#endinitclip代碼塊中使用;另外還可以使用類繼承的方式,在組件初始化時就為組件外觀鍊接屬性指定新的值,這裡也需要用到#initclip、#endinitclip代碼塊。#initclip和#endinitclip是Flash的編譯器命令,作為初始化代碼塊的開始标記和結束标記。隻要符号(symbol)被定義,那麼初始化代碼就被先于第一幀執行,而且緊執行一次。所以在這個代碼塊中,可以為整個組件類指定不同狀态下的外觀。

創建

創建組件就是自行設計制作出新的組件。

設計組件是一項繁重的工作。自行開發組件與使用組件進行可視化程序開發存在着極大的不同,要求程序員熟知原有的VCL類庫結構,精通面向對象程序設計。

設計組件是一項艱苦的工作。對于組件的開發者,組件是純粹的代碼。組件的開發不是一個可視化的開發過程,而是用C++或Object Pascal嚴格編制代碼的工作。實際上,創建新組件使我們回到傳統開發工具的時代。雖然這是一個複雜的過程,但也是一個一勞永逸的過程。

創建組件的最大意義在于封裝重複的工作,其次是可以擴充現有組件的功能。

組件創建過程包括設計、開發、調試(就是所謂的3D's)工作,然後是組件的使用。

組件開發者應該掌握的三項主要内容是:屬性、事件和方法。

1、組件源文件

"組件"面闆中提供的組件都是預編譯過的SWC剪輯。同時還提供了源Flash文檔(FLA)(其中包括的是這些組件的圖形)和源ActionScript類文件(AS)(其中包含的是這些組件的代碼),以便于您在創建自已的自定義組件時使用。第2版組件的源文件随Macromedia Flash一起安裝。在構建自己的組件之前,打開并查看其中部分文件,嘗試去了解這些文件的結構,會對您有所幫助。RadioButton組件就是較為簡單的組件的示例,您可能應首先研究該組件。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、組件結構概述

組件由Flash(FLA)文件和ActionScript(AS)文件組成。您可以選擇創建其它文件(例如,圖标和.swd調試文件),并将其與組件一起打包,但所有組件都需要一個FLA文件和一個ActionScript文件。完成組件開發後,需要将它導出為SWC文件。

Flash(FLA)文件、ActionScript(AS)文件和SWC文件

FLA文件包含一個影片剪輯元件,該元件必須在"鍊接屬性"和"組件定義"對話框中鍊接到AS文件。

影片剪輯元件有兩個幀和兩個圖層。第一個圖層是Actions圖層,它的第一幀上有一個stop()全局函數。第二個圖層是Assets圖層,它有兩個關鍵幀:第一幀包含一個邊框,第二幀包含所有其它資源,其中包括組件使用的圖形和基類。

指定組件的屬性和方法的ActionScript代碼位于單獨的ActionScript類文件中。此類文件還聲明組件的擴展的類(如果有)。AS類文件的名稱為組件的名稱加上".as"擴展名。例如,MyComponent.as包含MyComponent組件的源代碼。

最好将組件的FLA和AS文件保存在同一文件夾并将這兩個文件指定為相同的名稱。如果将AS文件保存在其它文件夾中,則必須确認該文件夾在類路徑中,以便FLA文件能夠找到它。有關類路徑的詳細信息,請參閱"學習Flash中的ActionScript 2.0"中的類。

3、構建第一個組件

在本節中,将構建一個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屬性,可用來獲取和設置指針的位置。

4、選擇父類

創建組件時,首先要确定是否擴展某個第2版類。如果選擇擴展某個第2版類,則可以擴展某個組件類(例如,Button、CheckBox、ComboBox、List等)或某個基類(UIObject或UIComponent)。除Media組件之外,所有其它組件類都擴展基類;如果擴展組件類,該類也會自動從基類繼承。

兩個基類為組件提供了常見功能。通過擴展這些類,組件一開始即具備一組基本的方法、屬性和事件。

在第2版框架中,您無需創建UIObject子類、UIComponent子類或任何其它類。即使組件類直接繼承自MovieClip類,也可以使用許多強大的組件功能:導出到SWC文件或編譯剪輯、使用内置實時預覽、查看可檢查屬性等等。但是,如果要将組件用于Macromedia第2版組件,并要使用管理器類,就需要擴展UIObject或UIComponent。

基于Macromedia Component Architecture第2版的組件源自UIObject類,該類是MovieClip類的子類。MovieClip類是Flash中可以在屏幕上表示可視對象的所有類的基類。

UIObject添加用于處理樣式和事件的方法。它在加載和卸載時(load和unload)、布局更改時(move、resize)以及隐藏或顯示時(hide和reveal),都會在繪制(draw事件等效于MovieClip.onEnterFrame事件)之前将事件發送到它的偵聽器。

UIObject另外提供隻讀變量來确定組件的位置和大小(width、height、x、y),并提供move()和setSize()方法來改變對象的位置和大小。

UIObject類實現以下功能:

樣式

事件

按縮放比例調整大小

了解UIComponent類

UIComponent類是UIObject的子類(請參閱"組件語言參考"中的UIComponent類)。它是處理用戶交互(鼠标和鍵盤輸入)的所有組件的基類。UIComponent類允許組件執行以下操作:

接收焦點和鍵盤輸入

啟用和禁用組件

按布局調整大小

關于擴展其它第2版類

為了能夠更方便地構造組件,可以擴展任何類的子類,這樣也就不需要直接擴展UIObject或UIComponent類。如果擴展任何其它第2版組件類(Media組件除外),默認情況下也會擴展UIObject和UIComponent。您可以通過擴展"組件"字典中列出的任何組件類來創建新組件類。

例如,如果要創建一個組件,其行為與Button組件的行為幾乎相同,就可以擴展Button類,而不必從基類重新創建Button類的所有功能。

下圖顯示了第2版組件的層次結構:

第2版組件層次結構

此文件的FlashPaper版本可在Flash安裝目錄的以下位置找到:Flash 8Samples and TutorialsSamplesComponentsarch_diagram.swf。

關于擴展MovieClip類

您可以選擇不擴展第2版類,而讓組件直接繼承ActionScript MovieClip類。但是,如果需要UIObject和UIComponent的任何功能,則必須親自構建。您可以打開UIObject和UIComponent類(First Run/Classes/mx/core)來檢查它們的構造方式。

5、創建組件影片剪輯

若要創建一個組件,必須創建一個影片剪輯元件并将它鍊接到該組件的類文件。

影片剪輯有兩個幀和兩個圖層。第一個圖層是Actions圖層,它的第一幀上有一個stop()全局函數。第二個圖層是Assets圖層,它有兩個關鍵幀。第一幀包含一個邊框或充當最終圖片的占位符的任意圖形。第二幀包含所有其它資源,包括組件使用的圖形和基類。

插入新的影片剪輯元件

所有組件都是MovieClip對象。要創建新組件,首先必須将新元件插入新的FLA文件中。

添加新組件元件:

在Flash中,創建空白的Flash文檔。

選擇"插入">"新建元件"。

顯示"創建新元件"對話框。

輸入元件名稱。為組件命名,方法是将組件中每個單詞的第一個字母更改為大寫字母(例如 MyComponent)。

選擇"影片剪輯"行為。

單擊"高級"按鈕顯示高級設置。

選擇"為ActionScript導出",取消選擇"在第一幀導出"。

輸入鍊接标識符。

在"AS 2.0類"文本框中,輸入ActionScript 2.0類的完全限定路徑。

類名稱應與顯示在"組件"面闆中的組件名稱相同。例如,Button組件的類為mx.controls.Button。

注意

不要包含文件擴展名;"AS 2.0類"文本框指向類的打包位置,而不是該文件的文件系統名稱。

如果ActionScript文件位于包内,必須包含該包的名稱。此值可以是類路徑的相對路徑,也可以是包的絕對路徑(例如mypackage.MyComponent)。

大多數情況下,應取消選中"在第一幀導出"(默認選中該選項)。有關詳細信息,請參閱組件開發檢查列表。

單擊"确定"。

Flash将元件添加到庫中,然後切換到元件編輯模式。在此模式下,元件的名稱顯示于舞台左上角的上方,并且有一個十字線表明該元件的注冊點。

您現在就可以編輯該元件以創建一個組件。請參閱編輯影片剪輯。

編輯影片剪輯

在創建新元件并為其定義鍊接後,即可在該元件的時間軸中定義組件的資源。

組件的元件應有兩個圖層。本節說明應該插入哪些圖層,應該在這些圖層上添加哪些内容。

若要編輯影片剪輯,請執行以下操作:

将圖層1重命名為動作,然後選擇第一幀。

打開"動作"面闆,然後添加stop()函數,如下所示:stop();

不要向此幀添加任何圖形資源。

添加一個名為Assets的圖層。

在Assets圖層上,選擇第二幀并插入一個空白關鍵幀。

現在該圖層上有兩個空白關鍵幀。

請執行以下操作之一:

·如果組件具有定義邊界區域的可視資源,則将這些元件拖到第一幀中并進行适當安排。

·如果組件在運行時創建其所有可視資源,請将一個BoundingBox元件拖到舞台上第一幀中,适當調整其大小,然後将實例命名為boundingBox_mc。該元件位于Configuration/ComponentFLA文件夾中的StandardComponents.fla的庫中。

如果要擴展現有組件,請将該組件的一個實例和任何其它基類放在Assets圖層的第二幀中。

為此,請從"組件"面闆中選擇該元件并将它拖到舞台上。如果要擴展一個基類,請打開Configuration/ComponentFLA文件夾中的StandardComponents.fla,然後将該類從庫中拖到舞台上。

注意

将UIComponent拖到組件庫時,會更改庫中的文件夾層次結構。如果打算再次使用庫,或将它用于其它組件組(如第2版組件),應重新組織文件夾層次結構,以便與StandardComponents.fla庫匹配,從而使庫組織有序,避免元件重複。

在組件的Assets圖層的第二幀添加由該組件使用的所有圖形資源。

組件所使用的任何資源(無論是其它組件還是位圖之類的媒體)都應具有一個放置在Assets圖層的第二幀中的實例。

完成的元件看起來應與下圖相似:

将影片剪輯定義為組件

影片剪輯元件必須在"組件定義"對話框中鍊接到ActionScript類文件。這是Flash了解在何處查找組件元标記的方式。(有關元标記的詳細信息,請參閱添加組件元數據。)您也可以在"組件定義"對話框中選擇其它選項。

将影片剪輯定義為組件:

在庫中選擇影片剪輯,然後從"庫"上下文菜單中選擇"組件定義"(Windows:右鍵單擊;Mac:按住Control鍵單擊)。

必須輸入一個AS 2.0類。

如果該類在包中,則輸入完整的包名稱。

如果需要,可以在"組件定義"對話框中指定其它選項:

單擊加号(+)按鈕可定義參數。

此為可選操作。最好的做法是在組件的類文件中使用元數據Inspectable标記來指定參數。如果未指定ActionScript 2.0類,則在這是一個在"組件"檢查器中播放的SWF文件。您可以将它嵌入組件FLA文件或浏覽到一個外部SWF文件。

指定實時預覽。

這是一個外部或嵌入的SWF文件。此處無需指定實時預覽;将一個邊框添加到組件影片剪輯,Flash即會為您創建實時預覽。請參閱創建組件影片剪輯。

輸入描述。

在Flash MX 2004中,由于"參考"面闆已删除,因此不建議使用"描述"字段。提供此字段目的在于以Flash MX格式保存FLA文件時的向後兼容性。

選擇圖标。

此選項指定一個PNG文件來用作組件的圖标。如果在ActionScript 2.0類文件中指定IconFile元數據标記(最佳做法),則會忽略該字段。

選擇或取消選擇"實例中參數已鎖定"。

如果取消選擇此選項,用戶則可以向每個組件實例添加不同于組件參數的參數。通常應選擇此設置。此選項提供與Flash MX的向後兼容性。

指定顯示在"組件"面闆中的工具提示。

6、創建ActionScript類文件

所有組件元件都鍊接到ActionScript 2.0類文件。(有關鍊接的信息,請參閱創建組件影片剪輯。)

要編輯ActionScript類文件,您可以使用Flash、任何文本編輯器,也可以使用任何"集成開發環境"(IDE)。

外部ActionScript類擴展其它類(無論該類是第2版組件、第2版基類還是ActionScript MovieClip類)。您應擴展所創建的功能與要創建的組件最類似的類。隻能從一個類繼承(擴展)。ActionScript 2.0不允許多繼承。

本節包含以下主題:

組件類文件的簡單示例

組件類文件概述

定義類及其超類

标識類、元件和所有者名稱

定義變量

使用getter/setter方法定義參數

添加組件元數據

定義組件參數

關于核心函數

發送事件

關于指定外觀

關于樣式

組件類文件的簡單示例

下面是類文件的一個簡單示例,該類文件名為MyComponent.as。如果要創建此組件,應将該類文件鍊接到Flash中的組件影片剪輯。

此示例包含從UIComponent類繼承的組件MyComponent至少應有的一組導入、方法和聲明。MyComponents.as文件保存在myPackage文件夾中。

【Event("eventName")】

//導入包。

import mx.core.UIObject;

//聲明類并從父類擴展。

class mypackage.MyComponent extends UIObject{

//标識此類所綁定到的元件名稱。

static var symbolName:String="mypackage.MyComponent";

//标識元件所有者的完全限定包名稱。

static var symbolOwner:Object=Object(mypackage.MyComponent);

//提供className變量。

var className:String="MyComponent";

//定義一個空構造函數。

function MyComponent(){

}

//調用父級的init()方法。

//隐藏邊框,該邊框

//僅在創作時使用。

function init():Void{

super.init();

boundingBox_mc.width=0;

boundingBox_mc.height=0;

boundingBox_mc.visible=false;

}

function createChildren():Void{

//調用createClassObject來創建子對象。

size();

invalidate();

}

function size(){

//編寫處理大小的代碼。

super.size();

invalidate();

}

function draw(){

//編寫處理可視化表示形式的代碼。

super.draw();

}

}

組件類文件概述

以下是介紹如何為組件類創建ActionScript文件的常規過程。根據所創建組件類型的不同,某些步驟是可選步驟。

編寫組件類文件:

(可選)導入類。(請參閱導入類)。

執行這一步驟,則無需寫出包(例如,使用Button而不是mx.controls.Button)即可引用類。

使用class關鍵字定義類;使用extend關鍵字擴展父類。(請參閱定義類及其超類)。

定義symbolName、symbolOwner和className變量。(請參閱标識類、元件和所有者名稱)。

隻有第2版組件才需要這些變量。

定義成員變量。(請參閱定義變量)。

這些變量可用于getter/setter方法。

定義一個構造函數。(請參閱關于構造函數)。

定義init()方法。(請參閱定義init()方法)。

如果類擴展的是UIComponent,則創建類時會調用此方法。如果類擴展的是MovieClip,則從構造函數調用此方法。

定義createChildren()方法。(請參閱定義createChildren()方法)。

如果類擴展的是UIComponent,則創建類時會調用此方法。如果類擴展的是MovieClip,則從構造函數調用此方法。

定義size()方法。(請參閱定義size()方法)。

如果類擴展的是UIComponent,則調整組件大小時調用此方法。此外,在創作時調整組件的實時預覽大小時也會調用此方法。

定義draw()方法。(請參閱關于無效)。

如果類擴展的是UIComponent,則組件無效時調用此方法。

添加一個元數據标記和聲明。(請參閱添加組件元數據)。

添加标記和聲明可使getter/setter屬性顯示在Flash的"屬性方法。(請參閱使用getter/setter方法定義參數)。

(可選)為組件中使用的每個外觀元素/鍊接創建變量。(請參閱關于指定外觀)。

執行這一步驟,用戶則可通過更改組件中的參數來設置不同的外觀元素。

8、在組件内組合現有組件

在本節中,您将構建一個可以組合Label、TextInput和Button組件的簡單的LogIn組件。本教程演示如何在新組件中通過添加未經編譯的Flash(FLA)庫元件來組合現有組件。已完成的組件文件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,用來設置和獲取名稱和密碼TextInput字段中的字符串值。LogIn組件還将在用戶單擊标記為"LogIn"的按鈕時發送一個"click"事件。

創建LogIn Flash(FLA)文件

LogIn類文件

測試和導出LogIn組件

8、導出和分發組件

Flash将組件導出為組件包(SWC文件)。組件可以分發為SWC文件或FLA文件。(有關将組件作為FLA分發的信息,請參閱Macromedia DevNet上的文章,網址為www.macromedia.com/support/flash/applications/creating_comps/creating_comps12.html。)

分發組件的最好方法是将它導出為SWC文件,這是因為SWC文件包含全部ActionScript、SWF文件以及使用組件所需的其它可選文件。如果要同時開發某個組件和使用該組件的應用程序,則SWC文件也十分有用。

SWC文件可用于分發在Macromedia Flash 8、Macromedia Dreamweaver MX 2004和Macromedia Director MX 2004中使用的組件。

無論開發組件的目的是為了供他人使用還是自己使用,對作為組件開發的正在進行部分的SWC文件進行測試都非常重要。例如,組件的FLA文件中不會出現的問題可能會在SWC文件中出現。

9、組件開發的最後一些步驟

組件創建完成并準備好打包之後,即可添加圖标和工具提示。要确保已完成所有必需的步驟,請參閱組件開發檢查列表。

本節包含以下主題:

·添加圖标

·添加工具提示

·組件開發檢查列表

添加圖标

您可以添加在Flash創作環境的"組件"面闆中表示組件的圖标。

添加組件的圖标:

·創建新圖像。

圖像必須為18x18像素,并且必須保存為PNG格式。它的Alpha透明度必須是8位,左上角的像素必須是透明的,以支持遮罩。

·在組件ActionScript類文件中的類定義之前添加以下定義:【IconFile("component_name.png")】

·将圖像添加到FLA文件所在的目錄。在導出SWC文件時,Flash将在歸檔的根級包含該圖像。

添加工具提示

當用戶将鼠标滾到Flash創作環境中"組件"面闆上的組件名稱或圖标上時,工具提示就會顯示出來。

在"組件定義"對話框中可以定義工具提示。可以從組件FLA文件的"庫"選項菜單訪問此對話框(Windows:右鍵單擊;Mac:按住Control鍵單擊)。

在"組件定義"對話框中添加工具提示:

在Flash中打開組件的FLA文件時,确保"庫"可見("窗口">"庫"菜單)。

單擊"庫"選項菜單(Windows:右鍵單擊;Mac:按住Control鍵單擊)。

"庫"選項菜單位于"庫"标題欄的右側,顯示為一個三條線和向下三角形的圖标。

選擇"組件定義"選項。

在"組件定義"對話框的"選項"下,選擇"顯示在'組件'面闆中"。

"工具"提示文本框即會變為可編輯文本框。

在"工具"提示文本框中輸入組件的工具提示文本。

單擊"确定"以保存更改。

相關詞條

相關搜索

其它詞條