翻页容器
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-03-11 08:20:13 |
👁️ 阅读: 9
翻页容器(PageView)是996引擎中用于实现左右滑动翻页效果的UI容器。以下是创建和使用翻页容器的基本方法:
## 1. 创建翻页容器
```lua
-- 先创建父节点
local parent = GUI:Win_Create("PageParent", 0, 0, 0, 0, false, false, true, false, false, false, 1)
-- 创建翻页容器
local pageView = GUI:PageView_Create(parent, "MyPageView", 100, 100, 400, 300, 1)
```
## 2. 添加子页面
```lua
-- 创建第一个子页面
local page1 = GUI:Widget_Create(pageView, "page1", 0, 0, 400, 300)
GUI:PageView_addPage(pageView, page1)
-- 创建第二个子页面
local page2 = GUI:Widget_Create(pageView, "page2", 0, 0, 400, 300)
GUI:PageView_addPage(pageView, page2)
```
## 3. 添加翻页事件监听
```lua
GUI:PageView_addOnEvent(pageView, function(eventType, currentPageIndex)
if eventType == 0 then -- 翻页事件
SL:print("翻页到第" .. currentPageIndex .. "页")
elseif eventType == 1 then -- 翻页结束
SL:print("翻页结束,当前是第" .. currentPageIndex .. "页")
end
end)
```
## 4. 控制翻页
```lua
-- 滚动到指定页面
GUI:PageView_scrollToItem(pageView, 2) -- 滚动到第2页
-- 设置当前页面
GUI:PageView_setCurrentPageIndex(pageView, 1)
-- 获取当前页面索引
local currentIndex = GUI:PageView_getCurrentPageIndex(pageView)
SL:print("当前页面索引:" .. currentIndex)
```
## 5. 获取页面信息
```lua
-- 获取所有子页面
local pages = GUI:PageView_getItems(pageView)
-- 获取子页面数量
local pageCount = GUI:PageView_getItemCount(pageView)
SL:print("总页面数:" .. pageCount)
```
## 6. 设置容器属性
```lua
-- 设置是否裁剪超出部分
GUI:PageView_setClippingEnabled(pageView, true)
-- 设置背景颜色(单色)
GUI:PageView_setBackGroundColor(pageView, "#FF0000")
-- 设置背景颜色类型:1-单色,2-渐变色
GUI:PageView_setBackGroundColorType(pageView, 1)
-- 设置背景透明度(0-255)
GUI:PageView_setBackGroundColorOpacity(pageView, 200)
```
## 完整示例:创建带背景的翻页容器
```lua
-- 创建父窗口
local parent = GUI:Win_Create("PageDemo", 0, 0, 0, 0, false, false, true, false, false, false, 1)
-- 创建翻页容器
local pageView = GUI:PageView_Create(parent, "MyPages", 50, 50, 500, 400, 1)
-- 设置背景
GUI:PageView_setBackGroundColor(pageView, "#1E1E1E")
GUI:PageView_setBackGroundColorOpacity(pageView, 200)
-- 添加3个页面
for i = 1, 3 do
local page = GUI:Widget_Create(pageView, "page_" .. i, 0, 0, 500, 400)
-- 为每个页面添加背景图片
local bg = GUI:Image_Create(page, "bg_" .. i, 0, 0, 500, 400, "res/public_win32/1900000610.png")
-- 添加页面编号文字
local text = GUI:Text_Create(page, "text_" .. i, 200, 180, 24, "#FFFFFF", "第" .. i .. "页")
GUI:PageView_addPage(pageView, page)
end
-- 添加翻页监听
GUI:PageView_addOnEvent(pageView, function(eventType, index)
if eventType == 0 then
SL:print("正在翻页到第" .. (index + 1) .. "页")
end
end)
```
**注意:**
1. 翻页容器的方向参数在创建时设置,通常传1即可
2. 子页面的大小应与容器可见区域一致
3. 翻页事件中,currentPageIndex是从0开始计数的
4. 记得先创建父节点,再创建翻页容器
有什么具体功能需要实现吗?比如翻页动画、页面内容动态加载等?
← 返回问答库