超级列表框

文档创建者:admin
浏览次数:29
最后更新:2025-06-19

# 超级列表框组件文档

## 基本信息
超级列表框是一个支持网格布局的高级列表组件,每个格子支持自定义容器,可横向/纵向/混合排列。

## 初始化与配置

### 初始化
```javascript
var 列表框 = new 超级列表框();
列表框.初始化(x, y, 宽度, 高度, 选项);
```

### 配置选项
```javascript
{
    宽度: 400,           // 列表框宽度
    高度: 300,           // 列表框高度
    背景颜色: 0xf8f8f8,  // 背景颜色
    边框颜色: 0xcccccc,  // 边框颜色
    边框宽度: 1,         // 边框宽度
    圆角: 4,             // 圆角大小
    单元格宽度: 100,     // 默认单元格宽度
    单元格高度: 100,     // 默认单元格高度
    横向间距: 10,        // 单元格横向间距
    纵向间距: 10,        // 单元格纵向间距
    选中颜色: 0x4a90e2,  // 选中单元格背景颜色
    悬停颜色: 0xe8e8e8,  // 悬停单元格背景颜色
    布局模式: '纵向',    // 布局模式: '横向', '纵向', '网格'
    网格列数: 3,         // 网格模式时每行的列数
    允许穿透: false,     // 是否允许穿透
    调试模式: false,     // 是否启用调试模式
    单元格列表: [],      // 单元格数据列表
    自适应单元格: false, // 是否根据列表尺寸自动计算单元格宽度
}
```

## 滚动相关配置
```javascript
{
    滚动条宽度: 6,       // 滚动条宽度
    滚动条颜色: 0x999999, // 滚动条颜色
    滚动条透明度: 0.8,    // 滚动条透明度
    滚动步长: 40,         // 鼠标滚轮滚动步长
    允许拖动: true,       // 是否允许拖动
    边缘留白: 10,         // 四周留白
    允许水平滚动: true,   // 是否允许水平滚动
    允许垂直滚动: true,   // 是否允许垂直滚动
    滚动速度系数: 1.0,    // 滚动速度系数,值越大滚动越快
    平滑过渡系数: 0.25,   // 平滑过渡系数,值越大过渡越快
}
```

## 回弹与动画效果配置
```javascript
{
    回弹效果: true,       // 是否启用回弹效果
    回弹强度: 0.2,        // 回弹强度 (0-1)
    回弹阻尼: 0.92,       // 回弹阻尼系数,值越大越慢
    回弹缓动函数: 'Cubic.Out', // 回弹缓动函数类型
    回弹基础时间: 300,     // 回弹动画基础持续时间(毫秒)
    回弹最大时间: 600,     // 回弹动画最大持续时间(毫秒)
    回弹过渡系数: 0.15,   // 回弹过渡系数,值越小越平滑
    惯性系数: 800,        // 惯性滑动系数,值越大滑动距离越长
    惯性持续时间: 800,    // 惯性滑动持续时间(毫秒)
    惯性缓动函数: 'Cubic.Out', // 惯性滑动缓动函数
    动画帧率: 60,         // 动画帧率,值越高越流畅
    边界拖动系数: 0.5,    // 边界拖动系数
}
```

## 主要方法

### 数据操作
```javascript
// 设置数据
列表框.设置数据(单元格列表);

// 添加单元格
列表框.添加单元格(单元格数据, 是否选中);

// 插入单元格
列表框.插入单元格(位置索引, 单元格数据, 是否选中);

// 更新单元格
列表框.更新单元格(索引, 新数据);

// 删除单元格
列表框.删除单元格(索引);

// 清空列表
列表框.清空();
```

### 选择与查找
```javascript
// 选择单元格
列表框.选择单元格(单元格容器);

// 根据索引选择单元格
列表框.选择索引(索引);

// 获取选中数据
列表框.获取选中数据();

// 获取选中索引
列表框.获取选中索引();

// 查找单元格
列表框.查找单元格(条件函数);

// 滚动到指定单元格
列表框.滚动到单元格(索引);
```

### 布局设置
```javascript
// 设置布局模式
列表框.设置布局模式(模式); // '横向', '纵向', '网格'

// 设置网格列数
列表框.设置网格列数(列数);

// 设置自适应单元格
列表框.设置自适应单元格(启用);
```

### 滚动控制
```javascript
// 设置滚动速度
列表框.设置滚动速度(速度系数);

// 设置平滑过渡速度
列表框.设置平滑过渡速度(平滑系数);

// 设置回弹效果
列表框.设置回弹效果(启用, 强度, 阻尼, 缓动函数, 基础时间, 最大时间);

// 设置动画参数
列表框.设置动画参数(帧率, 平滑系数, 回弹平滑系数);

// 设置边界拖动系数
列表框.设置边界拖动系数(系数);

// 设置滚动条显示
列表框.设置滚动条显示(显示);

// 获取滚动条显示状态
列表框.获取滚动条显示();
```

### 尺寸与位置
```javascript
// 设置组件宽高
列表框.设置宽高(宽, 高);

// 设置组件位置
列表框.设置位置(x, y);

// 获取容器对象
列表框.获取容器();
```

### 资源管理
```javascript
// 销毁组件
列表框.销毁();
```

## 事件监听
可以通过容器的emit事件监听用户交互:
```javascript
列表框.获取容器().on('单元格点击', function(单元格数据, 索引) {
    // 处理单元格点击事件
});

列表框.获取容器().on('单元格选择', function(单元格数据, 索引) {
    // 处理单元格选择事件
});

列表框.获取容器().on('单元格鼠标进入', function(单元格数据, 索引) {
    // 处理单元格鼠标进入事件
});

列表框.获取容器().on('单元格鼠标离开', function(单元格数据, 索引) {
    // 处理单元格鼠标离开事件
});
```



### 新增方法和事件:

1. **设置滚动进度**:
   - `设置垂直滚动进度(进度)` - 设置垂直滚动位置,参数为0-1之间的值
   - `设置水平滚动进度(进度)` - 设置水平滚动位置,参数为0-1之间的值

2. **获取滚动进度**:
   - `获取垂直滚动进度()` - 返回当前垂直滚动位置的进度值(0-1之间)
   - `获取水平滚动进度()` - 返回当前水平滚动位置的进度值(0-1之间)

3. **滚动进度事件**:
   - `垂直滚动进度变化` - 当垂直滚动位置变化时触发,参数为当前进度值
   - `水平滚动进度变化` - 当水平滚动位置变化时触发,参数为当前进度值

### 使用示例:

```javascript
// 创建和初始化超级列表框
var 列表框 = new 超级列表框();
列表框.初始化(x, y, 宽度, 高度, 选项);
列表框.设置数据(数据列表);

// 隐藏内置滚动条
列表框.设置滚动条显示(false);

// 监听滚动进度变化事件
列表框.获取容器().on('垂直滚动进度变化', function(进度) {
    // 更新外部自定义滚动条位置
    自定义滚动条.position.y = 起始Y + 进度 * 可滑动高度;
});

// 设置外部滚动条的拖动事件
自定义滚动条.on('拖动', function(位置) {
    // 计算进度值 (0-1之间)
    var 进度 = (位置.y - 起始Y) / 可滑动高度;
   
    // 设置列表框的滚动位置
    列表框.设置垂直滚动进度(进度);
});
```

这些新增功能使超级列表框能够更好地与外部自定义UI元素(如图片制作的滚动条)集成,满足您提到的需求。您可以隐藏内置滚动条,使用自定义的图片滚动条,并通过这些新方法和事件保持它们的同步。

## 性能优化
组件使用虚拟列表技术,只渲染可视区域内的单元格,对于超出可视区域的单元格会创建占位符,以提高大数据量下的性能表现。


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则