laya-coreui-es
Version:
laya核心库、ui库es版本,剔除了媒体、TTF等功能。基于 LayaAir-release_2.12.0 修改
491 lines (486 loc) • 16.7 kB
TypeScript
import { Box } from "./Box";
import { IRender } from "./IRender";
import { IItem } from "./IItem";
import { ScrollBar } from "./ScrollBar";
import { Event } from "../events/Event";
import { Point } from "../maths/Point";
import { Handler } from "../utils/Handler";
/**
* 当对象的 <code>selectedIndex</code> 属性发生变化时调度。
* @eventType laya.events.Event
*/
/**
* 渲染列表的单元项对象时调度。
* @eventType Event.RENDER
*/
/**
* <code>List</code> 控件可显示项目列表。默认为垂直方向列表。可通过UI编辑器自定义列表。
*
* @example <caption>以下示例代码,创建了一个 <code>List</code> 实例。</caption>
* package
* {
* import laya.ui.List;
* import laya.utils.Handler;
* public class List_Example
* {
* public function List_Example()
* {
* Laya.init(640, 800, "false");//设置游戏画布宽高、渲染模式。
* Laya.stage.bgColor = "#efefef";//设置画布的背景颜色。
* Laya.loader.load(["resource/ui/vscroll.png", "resource/ui/vscroll$bar.png", "resource/ui/vscroll$down.png", "resource/ui/vscroll$up.png"], Handler.create(this, onLoadComplete));
* }
* private function onLoadComplete():void
* {
* var arr:Array = [];//创建一个数组,用于存贮列表的数据信息。
* for (var i:int = 0; i < 20; i++)
* {
* arr.push({label: "item" + i});
* }
* var list:List = new List();//创建一个 List 类的实例对象 list 。
* list.itemRender = Item;//设置 list 的单元格渲染器。
* list.repeatX = 1;//设置 list 的水平方向单元格数量。
* list.repeatY = 10;//设置 list 的垂直方向单元格数量。
* list.vScrollBarSkin = "resource/ui/vscroll.png";//设置 list 的垂直方向滚动条皮肤。
* list.array = arr;//设置 list 的列表数据源。
* list.pos(100, 100);//设置 list 的位置。
* list.selectEnable = true;//设置 list 可选。
* list.selectHandler = new Handler(this, onSelect);//设置 list 改变选择项执行的处理器。
* Laya.stage.addChild(list);//将 list 添加到显示列表。
* }
* private function onSelect(index:int):void
* {
* trace("当前选择的项目索引: index= ", index);
* }
* }
* }
* import laya.ui.Box;
* import laya.ui.Label;
* class Item extends Box
* {
* public function Item()
* {
* graphics.drawRect(0, 0, 100, 20,null, "#ff0000");
* var label:Label = new Label();
* label.text = "100000";
* label.name = "label";//设置 label 的name属性值。
* label.size(100, 20);
* addChild(label);
* }
* }
* @example
* (function (_super){
* function Item(){
* Item.__super.call(this);//初始化父类
* this.graphics.drawRect(0, 0, 100, 20, "#ff0000");
* var label = new laya.ui.Label();//创建一个 Label 类的实例对象 label 。
* label.text = "100000";//设置 label 的文本内容。
* label.name = "label";//设置 label 的name属性值。
* label.size(100, 20);//设置 label 的宽度、高度。
* this.addChild(label);//将 label 添加到显示列表。
* };
* Laya.class(Item,"mypackage.listExample.Item",_super);//注册类 Item 。
* })(laya.ui.Box);
* Laya.init(640, 800);//设置游戏画布宽高、渲染模式。
* Laya.stage.bgColor = "#efefef";//设置画布的背景颜色。
* var res = ["resource/ui/vscroll.png", "resource/ui/vscroll$bar.png", "resource/ui/vscroll$down.png", "resource/ui/vscroll$up.png"];
* Laya.loader.load(res, new laya.utils.Handler(this, onLoadComplete));//加载资源。
* function onLoadComplete() {
* var arr = [];//创建一个数组,用于存贮列表的数据信息。
* for (var i = 0; i < 20; i++) {
* arr.push({label: "item" + i});
* }
* var list = new laya.ui.List();//创建一个 List 类的实例对象 list 。
* list.itemRender = mypackage.listExample.Item;//设置 list 的单元格渲染器。
* list.repeatX = 1;//设置 list 的水平方向单元格数量。
* list.repeatY = 10;//设置 list 的垂直方向单元格数量。
* list.vScrollBarSkin = "resource/ui/vscroll.png";//设置 list 的垂直方向滚动条皮肤。
* list.array = arr;//设置 list 的列表数据源。
* list.pos(100, 100);//设置 list 的位置。
* list.selectEnable = true;//设置 list 可选。
* list.selectHandler = new laya.utils.Handler(this, onSelect);//设置 list 改变选择项执行的处理器。
* Laya.stage.addChild(list);//将 list 添加到显示列表。
* }
* function onSelect(index)
* {
* console.log("当前选择的项目索引: index= ", index);
* }
*
* @example
* import List = laya.ui.List;
* import Handler = laya.utils.Handler;
* public class List_Example {
* public List_Example() {
* Laya.init(640, 800);//设置游戏画布宽高。
* Laya.stage.bgColor = "#efefef";//设置画布的背景颜色。
* Laya.loader.load(["resource/ui/vscroll.png", "resource/ui/vscroll$bar.png", "resource/ui/vscroll$down.png", "resource/ui/vscroll$up.png"], Handler.create(this, this.onLoadComplete));
* }
* private onLoadComplete(): void {
* var arr= [];//创建一个数组,用于存贮列表的数据信息。
* for (var i: number = 0; i < 20; i++)
* {
* arr.push({ label: "item" + i });
* }
* var list: List = new List();//创建一个 List 类的实例对象 list 。
* list.itemRender = Item;//设置 list 的单元格渲染器。
* list.repeatX = 1;//设置 list 的水平方向单元格数量。
* list.repeatY = 10;//设置 list 的垂直方向单元格数量。
* list.vScrollBarSkin = "resource/ui/vscroll.png";//设置 list 的垂直方向滚动条皮肤。
* list.array = arr;//设置 list 的列表数据源。
* list.pos(100, 100);//设置 list 的位置。
* list.selectEnable = true;//设置 list 可选。
* list.selectHandler = new Handler(this, this.onSelect);//设置 list 改变选择项执行的处理器。
* Laya.stage.addChild(list);//将 list 添加到显示列表。
* }
* private onSelect(index: number): void {
* console.log("当前选择的项目索引: index= ", index);
* }
* }
* import Box = laya.ui.Box;
* import Label = laya.ui.Label;
* class Item extends Box {
* constructor() {
* this.graphics.drawRect(0, 0, 100, 20, null, "#ff0000");
* var label: Label = new Label();
* label.text = "100000";
* label.name = "label";//设置 label 的name属性值。
* label.size(100, 20);
* this.addChild(label);
* }
* }
*/
export declare class List extends Box implements IRender, IItem {
/**改变 <code>List</code> 的选择项时执行的处理器,(默认返回参数: 项索引(index:int))。*/
selectHandler: Handler | null;
/**单元格渲染处理器(默认返回参数cell:Box,index:int)。*/
renderHandler: Handler | null;
/**单元格鼠标事件处理器(默认返回参数e:Event,index:int)。*/
mouseHandler: Handler | null;
/**指定是否可以选择,若值为true则可以选择,否则不可以选择。 @default false*/
selectEnable: boolean;
/**最大分页数。*/
totalPage: number;
/**@private */
protected _content: Box;
/**@private */
protected _scrollBar: ScrollBar | null;
/**@private */
protected _itemRender: any;
/**@private */
protected _repeatX: number;
/**@private */
protected _repeatY: number;
/**@private */
protected _repeatX2: number;
/**@private */
protected _repeatY2: number;
/**@private */
protected _spaceX: number;
/**@private */
protected _spaceY: number;
/**@private */
protected _cells: Box[];
/**@private */
protected _array: any[] | null;
/**@private */
protected _startIndex: number;
/**@private */
protected _selectedIndex: number;
/**@private */
protected _page: number;
/**@private */
protected _isVertical: boolean;
/**@private */
protected _cellSize: number;
/**@private */
protected _cellOffset: number;
/**@private */
protected _isMoved: boolean;
/**是否缓存内容,如果数据源较少,并且list内无动画,设置此属性为true能大大提高性能 */
cacheContent: boolean;
/**@private */
protected _createdLine: number;
/**@private */
protected _cellChanged: boolean;
/**@private */
protected _offset: Point;
/**@private */
protected _usedCache: string | null;
/**@private */
protected _elasticEnabled: boolean;
/**
* @inheritDoc
* @override
*/
destroy(destroyChild?: boolean): void;
/**
* @inheritDoc
* @override
*/
protected createChildren(): void;
/**
* @inheritDoc
* @override
*/
set cacheAs(value: string);
/**
* @inheritDoc
* @override
*/
get cacheAs(): string;
private onScrollStart;
private onScrollEnd;
/**
* 获取对 <code>List</code> 组件所包含的内容容器 <code>Box</code> 组件的引用。
*/
get content(): Box;
/**
* 垂直方向滚动条皮肤。
*/
get vScrollBarSkin(): string;
set vScrollBarSkin(value: string);
private _removePreScrollBar;
/**
* 水平方向滚动条皮肤。
*/
get hScrollBarSkin(): string;
set hScrollBarSkin(value: string);
/**
* 获取对 <code>List</code> 组件所包含的滚动条 <code>ScrollBar</code> 组件的引用。
*/
get scrollBar(): ScrollBar | null;
set scrollBar(value: ScrollBar | null);
/**
* 单元格渲染器。
* <p><b>取值:</b>
* <ol>
* <li>单元格类对象。</li>
* <li> UI 的 JSON 描述。</li>
* </ol></p>
* @implements
*/
get itemRender(): any;
set itemRender(value: any);
/**
* @inheritDoc
* @override
*/
set width(value: number);
/**
* @inheritDoc
* @override
*/
get width(): number;
/**
* @inheritDoc
* @override
*/
set height(value: number);
/**
* @inheritDoc
* @override
*/
get height(): number;
/**
* 水平方向显示的单元格数量。
*/
get repeatX(): number;
set repeatX(value: number);
/**
* 垂直方向显示的单元格数量。
*/
get repeatY(): number;
set repeatY(value: number);
/**
* 水平方向显示的单元格之间的间距(以像素为单位)。
*/
get spaceX(): number;
set spaceX(value: number);
/**
* 垂直方向显示的单元格之间的间距(以像素为单位)。
*/
get spaceY(): number;
set spaceY(value: number);
/**
* @private
* 更改单元格的信息。
* 在此销毁、创建单元格,并设置单元格的位置等属性。相当于此列表内容发送改变时调用此函数。
*/
protected changeCells(): void;
private _getOneCell;
private _createItems;
protected createItem(): Box;
/**
* @private
* 添加单元格。
* @param cell 需要添加的单元格对象。
*/
protected addCell(cell: Box): void;
/**
* 初始化单元格信息。
*/
initItems(): void;
/**
* 设置可视区域大小。
* <p>以(0,0,width参数,height参数)组成的矩形区域为可视区域。</p>
* @param width 可视区域宽度。
* @param height 可视区域高度。
*/
setContentSize(width: number, height: number): void;
/**
* @private
* 单元格的鼠标事件侦听处理函数。
*/
protected onCellMouse(e: Event): void;
/**
* @private
* 改变单元格的可视状态。
* @param cell 单元格对象。
* @param visable 是否显示。
* @param index 单元格的属性 <code>index</code> 值。
*/
protected changeCellState(cell: Box, visible: boolean, index: number): void;
/**
* @inheritDoc
* @override
*/
protected _sizeChanged(): void;
/**
* @private
* 滚动条的 <code>Event.CHANGE</code> 事件侦听处理函数。
*/
protected onScrollBarChange(e?: Event | null): void;
private posCell;
/**
* 表示当前选择的项索引。selectedIndex值更改会引起list重新渲染
*/
get selectedIndex(): number;
set selectedIndex(value: number);
/**
* @private
* 改变单元格的选择状态。
*/
protected changeSelectStatus(): void;
/**
* 当前选中的单元格数据源。
*/
get selectedItem(): any;
set selectedItem(value: any);
/**
* 获取或设置当前选择的单元格对象。
*/
get selection(): Box;
set selection(value: Box);
/**
* 当前显示的单元格列表的开始索引。
*/
get startIndex(): number;
set startIndex(value: number);
/**
* @private
* 渲染单元格列表。
*/
protected renderItems(from?: number, to?: number): void;
/**
* 渲染一个单元格。
* @param cell 需要渲染的单元格对象。
* @param index 单元格索引。
*/
protected renderItem(cell: Box, index: number): void;
private _bindData;
/**
* 列表数据源。
*/
get array(): any[];
private _preLen;
set array(value: any[]);
/**
* 更新数据源,不刷新list,只增加滚动长度
* @param array 数据源
*/
updateArray(array: any[]): void;
/**
* 列表的当前页码。
*/
get page(): number;
set page(value: number);
/**
* 列表的数据总个数。
*/
get length(): number;
/**
* @inheritDoc
* @override
*/
set dataSource(value: any);
/**
* @inheritDoc
* @override
*/
get dataSource(): any;
/**
* 单元格集合。
*/
get cells(): Box[];
/**是否开启橡皮筋效果*/
get elasticEnabled(): boolean;
set elasticEnabled(value: boolean);
/**
* 刷新列表数据源。
*/
refresh(): void;
/**
* 获取单元格数据源。
* @param index 单元格索引。
*/
getItem(index: number): any;
/**
* 修改单元格数据源。
* @param index 单元格索引。
* @param source 单元格数据源。
*/
changeItem(index: number, source: any): void;
/**
* 设置单元格数据源。
* @param index 单元格索引。
* @param source 单元格数据源。
*/
setItem(index: number, source: any): void;
/**
* 添加单元格数据源。
* @param source 数据源。
*/
addItem(source: any): void;
/**
* 添加单元格数据源到对应的数据索引处。
* @param souce 单元格数据源。
* @param index 索引。
*/
addItemAt(souce: any, index: number): void;
/**
* 通过数据源索引删除单元格数据源。
* @param index 需要删除的数据源索引值。
*/
deleteItem(index: number): void;
/**
* 通过可视单元格索引,获取单元格。
* @param index 可视单元格索引。
* @return 单元格对象。
*/
getCell(index: number): Box | null;
/**
* <p>滚动列表,以设定的数据索引对应的单元格为当前可视列表的第一项。</p>
* @param index 单元格在数据列表中的索引。
*/
scrollTo(index: number): void;
/**
* <p>缓动滚动列表,以设定的数据索引对应的单元格为当前可视列表的第一项。</p>
* @param index 单元格在数据列表中的索引。
* @param time 缓动时间。
* @param complete 缓动结束回掉
*/
tweenTo(index: number, time?: number, complete?: Handler | null): void;
/**@private */
protected _setCellChanged(): void;
/**@override */
protected commitMeasure(): void;
}