List组件将显示基于列表的信息,并且是适合显示信息数组的理想选择。
List组件由 item、row 和 data provider 构成,如下所述:
- Item:ActionScript 对象,通常包含
label
属性和data
属性,前者是描述性的属性,后者用于存储与项目关联的数据。 - Row:用于显示项目的组件。
- Data provider:一个组件,用于模拟 List组件所显示的项目。
默认情况下,List组件使用 CellRenderer 类提供在其中显示列表项目的行。 可以通过编程方式创建这些行;这通常通过细分 CellRenderer 类来完成。 CellRenderer 类实现 ICellRenderer 接口,该接口提供一组属性和方法,List组件可以使用这些属性和方法对其中的行进行操作,并将数据和状态信息发送到各行以供显示。 这将包括有关数据大小调整和选定内容的信息。
List组件提供针对其数据提供者执行的方法,例如 addItem()
和 removeItem()
方法。 可以使用上述及其它方法操作同一帧中作为 List组件存在的任何数组的数据,然后将更改广播给多个视图。 如果未随 List组件提供外部数据提供者,则这些方法会自动创建一个数据提供者实例并通过 List.dataProvider
属性将其公开。 List组件将使用实现 ICellRenderer 接口的 Sprite 来呈现每一行。 若要指定此渲染器,请使用 List.cellRenderer
属性。 您也可以创建一个 Array 实例或者从服务器上获取一个实例,然后将它用作多个列表、组合框、数据网格等的数据模型。
公共的属性:iconField:String---获取或设置用于提供项的图标的项字段
iconFunction:Function---获取或设置用于获得项的图标的函数
labelField:String---获取或设置dataProvider对象中的字段名称,该字段名称将显示为TextInput字段和下拉列表的标签
labelFunction:Function---获取或设置用于获得项的标签的函数
rowCount:uint---获取或设置在列表中至少部分可见的行的行数
rowHeight:Number---获取或设置列表中每一行的高度,以像素为单位
公共方法:
List();---创建新的List组件实例
getStyleDefinition():Object---基于itemToLabel和labelFunction属性检索渲染器将为给定数据对象显示的字符串
scrollToIndex(newCaretIndex:int):void---将列表滚动至位于指定索引处的项目
其所继承的属性与方法就不一一列出,下面举一个实例供你参考
package { // import flashx.textLayout.elements.ListElement; //类所在的包 import flash.display.MovieClip; import fl.controls.List; import fl.data.DataProvider; import flash.text.TextFormat; import flash.display.Loader; import flash.net.URLRequest; import flash.events.Event; import flash.events.IOErrorEvent; import flash.events.MouseEvent; import fl.events.ListEvent; public class ListMain extends MovieClip //声明变量,创建新实例 { private var list:List = new List();//创建新的list实例 private var loader:Loader; private var str:String; private var url:URLRequest; private var loader1:Loader; private var str1:String; private var url1:URLRequest; private var arr:Array = new Array(); private var arr1:Array = new Array(); private var arrName:Array = ["经典皮包","V型皮包","飞蝶皮包","饺子型皮包","个性皮包","时尚皮包","布袋皮包","精巧挎包","小兜皮包","钻石型皮包","现代女性皮包"]; private var dp:DataProvider = new DataProvider(); public function ListMain() { initlist(); initdp(); initloader(); } private function initloader():void { for (var j:int = 0; j < 11; j++) { str = ((j + 1) + ".jpg"); loader = new Loader ; url = new URLRequest(str); loader.load(url); arr[j] = loader; stage.addChild(arr[j]); } loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoaderInfoHandler); } private function onLoaderInfoHandler(e:Event):void { for (var l:int = 0; l < 11; l++) { arr[l].height = 400; arr[l].width = 370; arr[l].x = 170; // arr[l].y = 0; stage.addChild(arr[l]); // arr[0].visible = false; arr[l].visible = true; } } private function initdp():void { for (var i:int = 0; i < 11; i++) { loader1 = new Loader(); str1 = ((i + 1) + ".png"); url1 = new URLRequest(str1); loader1.load(url1); arr1[i] = loader1; } loader1.contentLoaderInfo.addEventListener(Event.COMPLETE,onCompleteHandler); } private function onCompleteHandler(e:Event):void { for (var b:int = 0; b < arrName.length; b++) { dp.addItem({aa:String(arrName[b]),shux:arr1[b]}); } } private function initlist():void { var txt:TextFormat = new TextFormat("楷体",12,0x663399); list.setRendererStyle("textFormat",txt); list.dataProvider = dp; list.iconField = "shux"; list.labelField = "aa"; stage.addChild(list); // list.x = 0; // list.y = 0; list.height = 400; list.width = 160; list.rowHeight = 80; list.addEventListener(ListEvent.ITEM_CLICK,onListHandler); } private function onListHandler(e:ListEvent):void { trace(e.item.shux); trace(list.itemToLabel(e.item)); for (var b:int = 0; b < 11; b++) { if (list.itemToLabel(e.item) == String(arrName[b])) { arr[b].visible = true; } else { arr[b].visible = false; } } } } } //加注释的是可要可不要