Flash MX 2004中的新組件對于我們開發網絡應用程序的確帶來了很大的方便,無論是在美觀和易使用方面都得到了不錯的評價。開發應用程序過程中相信大家使用的比較多的還是基于列表的組件(List、DataGrid、Tree 和 Menu),DataGrid、Tree 和 Menu 組件是 List 類的擴展.下面引用Flash MX 2004幫助文檔中的一段描述。
關于 List 類的構成
List 類由行構成。這些行顯示滑過和選區突出顯示,用作行選區的點擊狀態,并在滾動中扮演重要的角色。除了選區突出顯示和圖標(如節點圖標和Tree 組件的展開箭頭)之外,行還包含一個單元格(或者,如果是 DataGrid,則包含多個單元格)。在默認情況下,這些單元格是實現 CellRenderer API 的 TextField 對象。但是,您可以讓 List 使用不同的組件類作為每一行的單元格。唯一的要求是該類必須實現 List 用于與單元格通信的 CellRenderer API。

CellRenderer API 是一組屬性和方法,基于列表的組件(List、DataGrid、Tree 和 Menu)使用它們來處理和顯示每一行的自定義單元格內容。該自定義單元格可以包含預先建立的組件(如 CheckBox)或您創建的任何類。
即我們可以在基于列表的組件中用不同的組件類作為每一行的單元格,在單元格中填入更豐富的內容。Flash MX 2004幫助文檔中提到要在單元格中填入不同的組件類我們必須要把作為填充單元格的類實現CellRenderer API。要實現CellRenderer API 我們必須要在此類文件中實現如下四個方法(CellRenderer.getPreferredHeight()、CellRenderer.getPreferredWidth()、CellRenderer.setSize()、CellRenderer.setValue())并且系統將為單元格自動指定兩個方法和一個屬性(CellRenderer.getCellIndex()、CellRenderer.getDataLabel() 和 CellRenderer.listOwner),以便允許它與基于列表的組件通信。
利用List組件我們可以實現一個列表,讓用戶選擇一個列表中的某個或多個項目,默認情況下列表中的項目只能是文字內容,如果我們想列表中的每一項是一個圖片,那是不是會更讓用戶感興趣一些。今天我們就用CellRenderer API來實現我們的這個想法。
1、新建一空白文檔(尺寸:200 * 150,背景色設為#006600),打開組件面板,從面板中拖一list組件到舞臺中并把他的實類名設為myList,寬高分別為160 * 130。保存為LogoAd.fla。

2、在時間軸面板中新建一圖層取名為 actions,我們將在這一圖層寫入我們所需要的所有的actionscript語句。

把不同的內容放在不同的圖層并給這些圖層取一個和內容相關的名字是一個好習慣。
3、用選擇工具選擇List組件,下面我們要為List組件設置一些參數,rowHeight 設為128,labels 參數設置如圖。

同時請大家準備好5張jpg格式的圖片,圖片的寬高分別為 128 * 128 ,文件名分別為one,jpg、two.jpg、three.jpg、four.jpg、five.jpg,并且和LogoAd.fla文件在同一目錄。在我的源文件中有這樣的五張圖片,大家可以拿來使用。
4、在單元格中可以放入不同的組件,要在單元格中顯示圖片,我們可以將loader組件作為單元格的填充,然后在loader組件中裝載圖片。
5、下面我們來寫需要的類文件,如上所述要實現CellRenderer API必須要實現四個方法。為了大家更好的理解每個方法的執行過程,首先在類文件中只寫出這四個方法,在函數體內什么都不做。新建一動作腳本文件,寫下如下代碼:
import?mx.core.UIComponent;
class?LogoAd?extends?UIComponent{
?
?//構造函數********************
?function?LogoAd(){
??trace("構造函數執行");
?}
?
?function?setValue(suggested:String,?item:Object,?selected:Boolean)?:Void{
??trace("setValue?方法執行");
??trace("suggested?的值是"?+?suggested);
??trace("item?的值是"?+?item);
??trace("selected?的值是"?+?selected);
?}
?
?function?setSize(w:Number,?h:Number){
??trace("setSize?方法執行");
????????????????trace(w);
本文轉自:http://www.5uflash.com/flashjiaocheng/Flashzujianxuexi/1369.html
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
