UIList 列表组件
列表组件是一个支持NxM矩阵式排列的组件,其内部的项(item)是通过创建另一个界面源实现的
-- 项数据基类:UIListItemData (此外系统会自动创建每个界面作为项数据类-ListItem_?,请查阅system/UIRuntime.ts)
项数据类会自动根据控件创建相应的属性,以便填充后自动呈现出该数值或字符串(以及图片地址等)
项数据映射值参考:
UIBitmap -> string-图片地址
UIString -> string-文本
UIVariable -> number-数值变量ID
UIAvatar -> number-行走图ID
UIStandAvatar -> number-立绘ID
UIAnimation -> number-动画ID
UIInput -> string-默认文本
UICheckBox -> boolean-选中状态
UISwitch -> number-开关ID
UITabBox -> string-项(如aa,bb,cc)
UISlider -> number-值
UIGUI -> number-界面ID
UIList -> UIListItemData-项数据
相关事件:
EventObject.CHANGE 当改变状态时派发 onChange(state:number) state=0 表示selectedIndex改变,否则是overIndex
EventObject.LOADED 加载完成时候事件
UIList.OPEN_STATE_CHANGE 打开状态发生改变时
UIList.ITEM_CLICK 点击确认项
UIList.EVENT_FOCUS_CHANGE 【EventUtils事件】当焦点更改时派发的事件
UIList.ITEM_CREATE 创建项时
使用方法:
// 列表方式添加数据
var a = new UIList();
a.overImageURL = "asset/image/picture/control/uilistover.png";
a.selectImageURL = "asset/image/picture/control/uilistselect.png";
a.itemModelGUI = 8; // 使用指定的界面ID来创建项,如果需要指定类,请使用 itemModelClass
stage.addChild(a);
var dArr = ;
for(var i=0;i<10;i++){
var d:ListItem_8 = new ListItem_8();
d.pic = "asset/image/a.jpg"; // 假设8号界面存在名为pic的控件
d.txt = "kds"; // 假设8号界面存在名为txt的文本
d.战斗力 = 5; // 假设8号界面存在名为战斗力的数值变量控件,这里绑定5号变量
dArr.push(d);
}
a.items = dArr;
// 树方式添加数据:在设置a.items前就决定好数据的父子节点关系:
var child = new ListItem_8();
child.pic = "asset/image/a.jpg";
child.txt = "kdsChild";
child.战斗力 = 5;
dArr2.push(child);
// 事件监听示例
a.on(EventObject.CHANGE,this,this.onChange);
维护人员:黑暗之神KDS
创建时间:2019-07-09
继承 →UIRoot
子类 无
Public 属性
属性 |
---|
EVENT_FOCUS_CHANGE : string; 静态事件:当焦点更改时派发的事件 onFocusChange(lastFocus:UIList,currentFocus:UIList); |
OPEN_STATE_CHANGE : string; 静态事件:打开状态发生改变时 onChange(ui,data) |
ITEM_CLICK : string; 静态事件:点击确认项(已选中该项时再点击则派发事件/或ENTER键) |
ITEM_CREATE : string; 静态事件:创建项时 onItemCreate(ui: UIRoot, data: UIListItemData,index:number) |
KEY_UP : number; 静态按键-向上移动 开启键盘支持后的默认快捷键,支持修改 默认值=Keyboard.UP |
KEY_DOWN : number; 静态按键-向下移动 开启键盘支持后的默认快捷键,支持修改 默认值=Keyboard.DOWN |
KEY_LEFT : number; 静态按键-向左移动 开启键盘支持后的默认快捷键,支持修改 默认值=Keyboard.LEFT |
KEY_RIGHT : number; 静态按键-向右移动 开启键盘支持后的默认快捷键,支持修改 默认值=Keyboard.RIGHT |
KEY_ENTER : number; 静态按键-确定 开启键盘支持后的默认快捷键,支持修改 默认值=Keyboard.ENTER, Keyboard.SPACE |
KEY_BOARD_ENABLED : boolean; 静态开启键盘(手柄)支持:仅能操作当前焦点的UIList |
SINGLE_FOCUS_MODE : boolean; 静态开启单一焦点系统(焦点在指定的List上才可以操作,否则默认是无法操作的状态) |
focus : UIList; 静态设置List焦点: |
optimizationMode : boolean; 优化模式 默认值=false |
overSelectMode : boolean; 鼠标悬停则作为选中效果(默认是悬停效果)默认值=false |
onCreateItem : Callback; 创建ITEM时回调 onCreateItem(ui: UIRoot, data: UIListItemData,index:number) |
subitemIndentation : number; 子项缩进 默认值=20 |
selectEnable : boolean; 是否允许选择 默认值=true |
repeatX : number; 列数 默认值=1 |
spaceX : number; 横向间隔 默认值=2 |
spaceY : number; 重向间隔 默认值=20 |
itemWidth : number; 项宽度 默认值=200 |
itemHeight : number; 项高度 默认值=50 |
overImageURL : string; 光标悬停时的效果图片 |
overImage : UIBitmap; 光标悬停时的对象:获取对象有利于自己追加一些额外的效果逻辑 |
selectImageURL : string; 选中项的效果图片 |
selectedImage : UIBitmap; 选中项的效果图片对象:获取对象有利于自己追加一些额外的效果逻辑 |
overImageGrid9 : string; 光标在项上面时的效果图片的九宫格 默认值="0,0,0,0,0" |
selectImageGrid9 : string; 选中项的效果图片的九宫格 默认值="0,0,0,0,0" |
selectedImageAlpha : number; 选中项时效果图片的透明度 默认值=0.5 |
overImageAlpha : number; 光标在项上面时的效果图片的透明度 默认值=0.5 |
selectedImageOnTop : boolean; 选中项时效果图片是否在上层显示(盖住项)默认值=true |
overImageOnTop : boolean; 光标在项上面时的效果图片是否在上层显示(盖住项)默认值=true |
itemModelClass : any; 项的类设定 |
itemModelGUI : number; 项对应的界面ID |
items : UIListItemData; 所有项数据 |
itemSprites : Sprite; 获取全部项对应的显示对象 |
length : number; 只读列表的数据总个数。 |
selectedItem : UIListItemData; 选中项,根据指定的数据 |
selectedIndex : number; 选中项,根据索引(即所在数据组的位置,数据组包括未打开的隐藏树节点)默认值=-1 |
overIndex : number; 悬停项,根据索引(即所在数据组的位置,数据组包括未打开的隐藏树节点)默认值=-1 |
Public 方法
方法 |
---|
setKeyDown(keyCode : number): void 静态模拟按键按下:仅能操作当前焦点的UIList |
setSelectedIndexForce(v : number): void 选中项,根据索引,不派发EventObject.CHANGE事件 |
setOverIndexForce(v : number): void 悬停项,根据索引,不派发EventObject.CHANGE事件 |
scrollTo(index : number, ignoreAlreadyInVisible? : boolean, tween? : boolean, duration? : number, ease? : Function, complete? : Callback): void 滚动到指定行:如果该项显示对象在完全显示中时则忽略滚动 |
replaceItem(itemData : UIListItemData, index : number): void 替换数据刷新显示,同时会触发 onCreateItem 函数 |
addItem(itemData : UIListItemData, index? : number): UIRoot 添加数据 |
removeItem(itemData : UIListItemData): number 移除数据 |
removeItemByIndex(index : number): UIListItemData 移除数据,根据指定的位置 |
setItemIndex(itemData : UIListItemData, toIndex : number): boolean 更换位置 |
setItemIndexByIndex(itemIndex : number, toIndex : number): boolean 更换位置-根据数据所在的位置 |
getItemUI(index : number): UIRoot 获取项的显示对象 |
详情
EVENT_FOCUS_CHANGE
EVENT_FOCUS_CHANGE : string;
静态事件:当焦点更改时派发的事件 onFocusChange(lastFocus:UIList,currentFocus:UIList);
// lastFocus - 表示上次的焦点列表
// currentFocus - 表示此次的焦点列表
EventUtils.addEventListenerFunction(UIList,UIList.EVENT_FOCUS_CHANGE,(lastFocus:UIList,currentFocus:UIList)=>{
// to do
},this);
OPEN_STATE_CHANGE
OPEN_STATE_CHANGE : string;
静态事件:打开状态发生改变时 onChange(ui,data)
uiList.on(UIList.OPEN_STATE_CHANGE,this,this.onOpenStateChange);
ITEM_CLICK
ITEM_CLICK : string;
静态事件:点击确认项(已选中该项时再点击则派发事件/或ENTER键)
uiList.on(UIList.ITEM_CLICK,this,this.onItemClick);
ITEM_CREATE
ITEM_CREATE : string;
静态事件:创建项时 onItemCreate(ui: UIRoot, data: UIListItemData,index:number)
uiList.on(UIList.ITEM_CREATE,this,this.onItemCreate);
SINGLE_FOCUS_MODE
SINGLE_FOCUS_MODE : boolean;
静态开启单一焦点系统(焦点在指定的List上才可以操作,否则默认是无法操作的状态)
通过设置UIList.focus来激活指定的列表以便操作
focus
focus : UIList;
静态设置List焦点:
-- 只有设置了焦点的按键才有效
-- 如果是单一焦点系统的话同一时间内只允许一个List启用
optimizationMode
optimizationMode : boolean;
优化模式 默认值=false
不会生成所有的item显示对象,而只生成可见范围内的装载位,在滚动显示时根据当前情况再将数据安装到对应的装载位上
-- 如需要启用,请在设置item前设置该参数为true
-- 该模式下使用通过索引getItemUI获取的装载位并不是固定的
overImageGrid9
overImageGrid9 : string;
光标在项上面时的效果图片的九宫格 默认值="0,0,0,0,0"
九宫格设置:上边距、右边距、下边距、左边距、是否平铺(1表示平铺)
让素材不再简单拉伸,而是根据九宫格方式进行拉伸
selectImageGrid9
selectImageGrid9 : string;
选中项的效果图片的九宫格 默认值="0,0,0,0,0"
九宫格设置:上边距、右边距、下边距、左边距、是否平铺(1表示平铺)
让素材不再简单拉伸,而是根据九宫格方式进行拉伸
itemSprites
itemSprites : Sprite;
获取全部项对应的显示对象
如果更新了项数据则显示对象也会被替换成新的,若需要记录该显示对象请谨慎使用
selectedItem
selectedItem : UIListItemData;
选中项,根据指定的数据
@return UIListItemData
selectedIndex
selectedIndex : number;
选中项,根据索引(即所在数据组的位置,数据组包括未打开的隐藏树节点)默认值=-1
@return number
setKeyDown
setKeyDown(keyCode : number): void :
静态模拟按键按下:仅能操作当前焦点的UIList
参数
keyCode 对应键位 KEY_UP/KEY_DOWN/KEY_LEFT/KEY_RIGHT/KEY_ENTER
setSelectedIndexForce
setSelectedIndexForce(v : number): void :
选中项,根据索引,不派发EventObject.CHANGE事件
参数
v 选中项
setOverIndexForce
setOverIndexForce(v : number): void :
悬停项,根据索引,不派发EventObject.CHANGE事件
参数
v 悬停项
scrollTo
scrollTo(index : number, ignoreAlreadyInVisible? : boolean, tween? : boolean, duration? : number, ease? : Function, complete? : Callback): void :
滚动到指定行:如果该项显示对象在完全显示中时则忽略滚动
参数
index 指定的索引
ignoreAlreadyInVisible [可选] 默认值=true 忽略已
tween [可选] 默认值=false 是否缓动
duration [可选] 默认值=0 持续时间
ease [可选] 默认值=null 缓动方法
complete [可选] 默认值=null 当缓动完毕时回调
replaceItem
replaceItem(itemData : UIListItemData, index : number): void :
替换数据刷新显示,同时会触发 onCreateItem 函数
参数
itemData 新数据
index 需要替换的items索引
addItem
addItem(itemData : UIListItemData, index? : number): UIRoot :
添加数据
参数
itemData 新数据
index [可选] 默认值=-1 插入的位置,-1表示向后插入
返回
UIRoot 数据对应的显示对象
removeItem
removeItem(itemData : UIListItemData): number :
移除数据
参数
itemData 数据,如果该数据不在列表内则忽略
返回
number 数据所在的位置
removeItemByIndex
removeItemByIndex(index : number): UIListItemData :
移除数据,根据指定的位置
参数
index 指定的位置
返回
UIListItemData 数据
setItemIndex
setItemIndex(itemData : UIListItemData, toIndex : number): boolean :
更换位置
参数
itemData 数据
toIndex 需要更换至的位置
返回
boolean 是否更换成功
setItemIndexByIndex
setItemIndexByIndex(itemIndex : number, toIndex : number): boolean :
更换位置-根据数据所在的位置
参数
itemIndex 数据所在的位置
toIndex 需要更换至的位置
返回
boolean 是否更换成功
getItemUI
getItemUI(index : number): UIRoot :
获取项的显示对象
参数
index 索引
返回
UIRoot