下面這個(gè)就是最終的結(jié)果,你可以輕松的創(chuàng)建一個(gè)。
這個(gè)效果是通過創(chuàng)建一個(gè)自定義cellRenderer,而不是ListBox默認(rèn)的處理。
一個(gè)cellRenderer就是任意的一個(gè)class,這個(gè)class要實(shí)現(xiàn)Cell Renderer API,被用來在基于列表的組件(List,DataGrid,Tree和Menu)顯示一行的內(nèi)容。你可以在幫助中找到更多關(guān)于Cell Renderers的信息
Using Components -> Components Dictionary -> CellRenderer API
按下面的步驟創(chuàng)建上面的例子
1.我的LabelCellRenderer,解壓縮到合適的路徑(.fla所在的路徑最好),保持壓縮包中的文件目錄
2.插入一個(gè)新的MC符號(hào),命名為"LabelCellRenderer",不加引號(hào),這是個(gè)空的符號(hào)
3.在庫(kù)面板的LabelCellRenderer上單擊右鍵,從菜單中選擇“l(fā)inkage...”。點(diǎn)擊“Export for ActionScript”,使用“com.darronschall.LabelCellRenderer”作為AS2.0的類。而且確定“LabelCellRenderer”作為ID。
4.添加一個(gè)Label組件到庫(kù)中。這是必要的,因?yàn)長(zhǎng)abelCellRenderer用他來顯示。
5.拖動(dòng)一個(gè)ListBox到舞臺(tái)上,給他一個(gè)實(shí)例名稱。我使用“myList”,在這個(gè)例子中調(diào)整他的大小到250×90。
6.復(fù)制粘貼下面的代碼,以使用LabelCellRenderer
// 普通的事件處理
function change(eventObj) {
trace(eventObj.target.selectedItem.data);
}
// 填充ListBox - 注意label字符串中的HTML代碼
myList.addItem({label:"Apples ... are red", data:"apple"});
myList.addItem({label:"Oranges ... are orange", data:"orange"});
myList.addItem({label:"Bananas ... are yellow", data:"banana"});
myList.addItem({label:"Pears ... are green", data:"pear"});
// 當(dāng)內(nèi)容不足以顯示滾動(dòng)條時(shí),關(guān)閉這個(gè)討厭的東西
myList.vScrollPolicy = "off";
// 使用 LabelCellRenderer 來顯示 listBox中的label,并允許使用html myList.cellRenderer = "LabelCellRenderer";
myList.addEventListener("change", this);
// 原文里改變了組件樣式,我發(fā)現(xiàn)不改反而更漂亮,呵呵(qhwa注)
//_global.style.setStyle("themeColor", 0xCCCCCC);
這樣應(yīng)該可以了,祝你好運(yùn)嘍~
希望你明白了怎樣使用一個(gè)CellRenderer有效地顯示你需要地東西,而不是去鉆研List組件的內(nèi)部程序。