176 lines
5.5 KiB
Lua
176 lines
5.5 KiB
Lua
local UIPrefabObject = require "app/bf/unity/uiprefab_object"
|
|
local ScrollRectOld = class("ScrollRect", LuaComponent)
|
|
|
|
function ScrollRectOld:init()
|
|
self.cellList = {} --所有cell
|
|
|
|
self.scrollRectOld = self.baseObject:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SCROLL_RECT_BASE_OLD)
|
|
self.scrollRectOld:AddOnInstantiateCellAction(function(gameObject)
|
|
self:_instantiateCell(gameObject)
|
|
end)
|
|
self.scrollRectOld:AddRefreshAction(function(index, cellIndex) self:_refreshFunc(index + 1, cellIndex) end)
|
|
self.scrollRectOld:AddSetSelectedAction(function(isSelected, index) self:_setSelectedFunc(isSelected, index) end)
|
|
end
|
|
|
|
function ScrollRectOld:_instantiateCell(gameObject)
|
|
if self:isDestroyed() then
|
|
ResourceManager:destroyPrefab(gameObject)
|
|
return
|
|
end
|
|
local prefabObject = UIPrefabObject:create()
|
|
prefabObject:initWithGameObject(gameObject)
|
|
prefabObject:initPrefabHelper()
|
|
prefabObject:genAllChildren()
|
|
self.baseObject:addChildList(prefabObject)
|
|
|
|
local cell = prefabObject:addLuaComponent(self.initCallback())
|
|
if self.initFinishCallback then
|
|
self.initFinishCallback(cell)
|
|
end
|
|
table.insert(self.cellList, cell)
|
|
end
|
|
|
|
---- c#调用 cell刷新事件
|
|
function ScrollRectOld:_refreshFunc(index, cellIndex)
|
|
local cell = self.cellList[cellIndex]
|
|
if self.refreshCallback and cell then
|
|
cell:setIndex(index)
|
|
self.refreshCallback(index, cell)
|
|
end
|
|
end
|
|
|
|
---- c#调用 cell选中事件
|
|
function ScrollRectOld:_setSelectedFunc(isSelected, cellIndex)
|
|
local cell = self.cellList[cellIndex]
|
|
if self.selectedCallback and cell then
|
|
self.selectedCallback(isSelected, cell)
|
|
end
|
|
end
|
|
|
|
---- 添加init回调 (function(index) return path, cellComp end)
|
|
function ScrollRectOld:addInitCallback(callback)
|
|
self.initCallback = callback
|
|
end
|
|
|
|
---- 添加loadCell完成回调
|
|
function ScrollRectOld:addInitFinishCallback(callback)
|
|
if self.cellList then
|
|
for k, v in ipairs(self.cellList) do
|
|
callback(v)
|
|
end
|
|
end
|
|
self.initFinishCallback = callback
|
|
end
|
|
|
|
---- 添加refresh回调 (function(index, cell) end)
|
|
function ScrollRectOld:addRefreshCallback(callback)
|
|
self.refreshCallback = callback
|
|
end
|
|
|
|
---- 添加选中回调 (function(isSelected, cell) end)
|
|
function ScrollRectOld:addSelectedCallback(callback)
|
|
self.selectedCallback = callback
|
|
end
|
|
|
|
---- 设置scroll rect 总数量
|
|
function ScrollRectOld:setTotalCount(count)
|
|
self.scrollRectOld:SetTotalCount(count)
|
|
end
|
|
|
|
function ScrollRectOld:getTotalCount()
|
|
return self.scrollRectOld:GetTotalCount()
|
|
end
|
|
|
|
---- 添加一个cell
|
|
function ScrollRectOld:addCell()
|
|
self.scrollRectOld:AddCell()
|
|
end
|
|
|
|
---- 刷新所有 调用当前显示cells的refresh方法
|
|
function ScrollRectOld:refreshAll()
|
|
self.scrollRectOld:RefreshAll()
|
|
end
|
|
|
|
------- 立即 重新装填scrollRect (index为置顶cell的index即数据在数组中的index)
|
|
function ScrollRectOld:refillCells(index)
|
|
local index = index or 0
|
|
self.scrollRectOld:RefillCells(index)
|
|
end
|
|
---- 立即 倒序重新装填scrollRect (offset = totalcount - 想要置底的cellindex) 只支持ContentConstraintCount == 1
|
|
function ScrollRectOld:refillCellsFromEnd(index)
|
|
local index = index or 0
|
|
self.scrollRectOld:RefillCellsFromEnd(index)
|
|
end
|
|
|
|
---- 分帧 重新装填scrollRect (index为置顶cell的index即数据在数组中的index)
|
|
function ScrollRectOld:refillCellsForFrame(index, intervalFrame)
|
|
local index = index or 0
|
|
local intervalFrame = intervalFrame or 3
|
|
self.scrollRectOld:RefillCellsForFrame(intervalFrame, index)
|
|
end
|
|
|
|
---- 分帧 倒序重新装填scrollRect (offset = totalcount - 想要置底的cellindex) 只支持ContentConstraintCount == 1
|
|
function ScrollRectOld:refillCellsFromEndFrame(offset, intervalFrame)
|
|
local offset = offset or 0
|
|
local intervalFrame = intervalFrame or 3
|
|
self.scrollRectOld:RefiilCellsFromEndForFrame(intervalFrame, offset)
|
|
end
|
|
|
|
---- 获取当前选中的index
|
|
function ScrollRectOld:getSelectedIndex()
|
|
return self.scrollRectOld:GetSelectedIndex() + 1
|
|
end
|
|
|
|
---- 设置当前选中的index
|
|
function ScrollRectOld:setSelected(selectIndex)
|
|
self.scrollRectOld:SetSelected(selectIndex - 1)
|
|
end
|
|
|
|
---- remove 索引为index cell
|
|
function ScrollRectOld:removeCell(index, alignFlag)
|
|
if alignFlag == nil then
|
|
alignFlag = true
|
|
end
|
|
self.scrollRectOld:RemoveCell(index - 1, alignFlag)
|
|
end
|
|
|
|
---- 插入一个cell
|
|
function ScrollRectOld:insertCell(index, alignFlag)
|
|
if alignFlag == nil then
|
|
alignFlag = true
|
|
end
|
|
self.scrollRectOld:InsertCell(index - 1, alignFlag)
|
|
end
|
|
|
|
---- 滑动到索引为index的cell
|
|
function ScrollRectOld:scrollToCell(index, speed, alignFlag)
|
|
if alignFlag == nil then
|
|
alignFlag = true
|
|
end
|
|
self.scrollRectOld:ScrollToCell(index - 1, speed, alignFlag)
|
|
end
|
|
|
|
---- 滑动到索引为index的cell 立即 可以在一开始直接调用也会refill
|
|
function ScrollRectOld:scrollToCellImmediately(index, alignFlag)
|
|
if alignFlag == nil then
|
|
alignFlag = true
|
|
end
|
|
self.scrollRectOld:ScrollToCellImmediately(index - 1, alignFlag)
|
|
end
|
|
|
|
---- 清除scroll rect
|
|
function ScrollRectOld:clearCells()
|
|
self.scrollRectOld:ClearCells()
|
|
end
|
|
|
|
function ScrollRectOld:getScrollRect()
|
|
return self.scrollRectOld
|
|
end
|
|
|
|
function ScrollRectOld:isFullContent()
|
|
local scrollHeight = self.baseObject:getComponent(GConst.TYPEOF_UNITY_CLASS.RECTTRANSFORM).rect.height
|
|
local contentHeight = self.scrollRectOld.content.rect.height
|
|
return scrollHeight < contentHeight
|
|
end
|
|
|
|
return ScrollRectOld |