下面這個就是最終的結(jié)果,你可以輕松的創(chuàng)建一個。
這個效果是通過創(chuàng)建一個自定義cellRenderer,而不是ListBox默認的處理。
一個cellRenderer就是任意的一個class,這個class要實現(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.插入一個新的MC符號,命名為"LabelCellRenderer",不加引號,這是個空的符號
3.在庫面板的LabelCellRenderer上單擊右鍵,從菜單中選擇“l(fā)inkage...”。點擊“Export for ActionScript”,使用“com.darronschall.LabelCellRenderer”作為AS2.0的類。而且確定“LabelCellRenderer”作為ID。
4.添加一個Label組件到庫中。這是必要的,因為LabelCellRenderer用他來顯示。
5.拖動一個ListBox到舞臺上,給他一個實例名稱。我使用“myList”,在這個例子中調(diào)整他的大小到250×90。
6.復制粘貼下面的代碼,以使用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"});
// 當內(nèi)容不足以顯示滾動條時,關(guān)閉這個討厭的東西
myList.vScrollPolicy = "off";
// 使用 LabelCellRenderer 來顯示 listBox中的label,并允許使用html myList.cellRenderer = "LabelCellRenderer";
myList.addEventListener("change", this);
// 原文里改變了組件樣式,我發(fā)現(xiàn)不改反而更漂亮,呵呵(qhwa注)
//_global.style.setStyle("themeColor", 0xCCCCCC);
這樣應該可以了,祝你好運嘍~
希望你明白了怎樣使用一個CellRenderer有效地顯示你需要地東西,而不是去鉆研List組件的內(nèi)部程序。