前端列表的移除子对象 ,列表插入子对象
🤖 回答引擎: 热血江湖Lua |
🕒 时间: 2026-03-02 18:10:54 |
👁️ 阅读: 18
对于前端列表的移除子对象和插入子对象操作,FGUI提供了多种方法:
## 移除子对象
1. **移除指定子控件**:
```lua
FGUI:RemoveChild(component, child, dispose?)
```
参数:
- `component`:父对象(列表容器)
- `child`:要移除的子对象
- `dispose?`:是否销毁(true销毁,false留存在根场景中,默认true)
2. **按照索引移除子控件**:
```lua
FGUI:RemoveChildAt(component, index, dispose?)
```
参数:
- `component`:父对象(列表容器)
- `index`:要移除的子控件索引
- `dispose?`:是否销毁(默认true)
3. **批量移除子控件**:
```lua
FGUI:RemoveChildren(widget, beginIndex, endIndex, dispose?)
```
参数:
- `widget`:父对象(列表容器)
- `beginIndex`:开始索引(默认0)
- `endIndex`:结束索引(默认-1,endIndex<0则移除所有子控件)
- `dispose?`:是否销毁(默认true)
4. **移除item到对象池**(针对列表组件):
```lua
FGUI:GList_removeChildToPool(widget, child)
```
参数:
- `widget`:列表组件
- `child`:要移除的item对象
5. **按索引移除item到对象池**:
```lua
FGUI:GList_removeChildToPoolAt(widget, index)
```
参数:
- `widget`:列表组件
- `index`:要移除的item索引(从0开始)
6. **移除范围item到对象池**:
```lua
FGUI:GList_removeChildrenToPool(widget, beginIndex?, endIndex?)
```
参数:
- `widget`:列表组件
- `beginIndex?`:开始索引(默认0)
- `endIndex?`:结束索引(默认-1表示全部)
## 插入子对象
1. **按索引添加子控件**:
```lua
FGUI:AddChildAt(component, child, index)
```
参数:
- `component`:组件对象(列表容器)
- `child`:子对象
- `index`:插入位置的索引
2. **从对象池添加item**(针对列表组件):
```lua
FGUI:GList_addItemFromPool(widget, url)
```
参数:
- `widget`:列表组件
- `url`:item资源路径(默认使用默认item)
返回值:添加的item对象
3. **从对象池获取item**(先获取再添加):
```lua
FGUI:GList_getFromPool(widget, url)
```
参数:
- `widget`:列表组件
- `url`:item资源路径
返回值:获取到的item对象
## 注意事项
- 如果列表设置为虚拟列表模式(使用`FGUI:GList_setVirtual(widget)`),则不能通过`AddChild`、`RemoveChild`等方式直接管理列表,只能通过设置`numItems`来管理列表数据长度。
- 在虚拟列表模式下,需要调用`FGUI:GList_refreshVirtualList(widget)`来刷新列表。
- 使用对象池管理可以提高性能,避免频繁创建和销毁对象。
← 返回问答库