197 lines
5.4 KiB
Lua
197 lines
5.4 KiB
Lua
local UIPrefabObject = require "app/bf/unity/uiprefab_object"
|
|
local ScrollRectCenter = class("ScrollRectCenter", LuaComponent)
|
|
|
|
function ScrollRectCenter:init()
|
|
self.centerIndex = 0
|
|
self.cellList = {}
|
|
self.scrollRectCenter = self.baseObject:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SCROLL_RECT_CENTER)
|
|
|
|
-- c#层实例化后调用
|
|
self.scrollRectCenter:AddOnInstantiateCellAction(function(gameObject)
|
|
self:_instantiateCell(gameObject)
|
|
end)
|
|
|
|
self.scrollRectCenter:AddRefreshAction(function(index, objIndex)
|
|
self:_refreshFunc(index + 1, objIndex)
|
|
end)
|
|
|
|
self.scrollRectCenter:AddSetSelectedAction(function(isSelected, index)
|
|
self:_setSelectedFunc(isSelected, index)
|
|
end)
|
|
|
|
self.scrollRectCenter:AddOnCenterAction(function(index)
|
|
self:_onCenterFunc(index + 1)
|
|
end)
|
|
|
|
self.scrollRectCenter:AddOnLeaveCenterAction(function(index)
|
|
self:_onLeaveCenterFunc(index + 1)
|
|
end)
|
|
end
|
|
|
|
function ScrollRectCenter:_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 ScrollRectCenter:_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 ScrollRectCenter:_setSelectedFunc(isSelected, cellIndex)
|
|
local cell = self.cellList[cellIndex]
|
|
if self.selectedCallback and cell then
|
|
self.selectedCallback(isSelected, cell)
|
|
end
|
|
end
|
|
|
|
---- c#调用 cell处于中心事件
|
|
function ScrollRectCenter:_onCenterFunc(index)
|
|
local cell = self.cellList[index]
|
|
if self.onCenterCallback and cell then
|
|
self.onCenterCallback(index, cell)
|
|
end
|
|
self.centerIndex = index
|
|
end
|
|
|
|
---- c#调用 cell处于离开中心事件
|
|
function ScrollRectCenter:_onLeaveCenterFunc(index)
|
|
local cell = self.cellList[index]
|
|
if self.onLeaveCenterCallback and cell then
|
|
self.onLeaveCenterCallback(index, cell)
|
|
end
|
|
end
|
|
|
|
---- *********************************************************************
|
|
|
|
---- 添加init回调 (function(index) return cell end)
|
|
function ScrollRectCenter:addInitCallback(callback)
|
|
self.initCallback = callback
|
|
end
|
|
|
|
function ScrollRectCenter: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 ScrollRectCenter:addRefreshCallback(callback)
|
|
self.refreshCallback = callback
|
|
end
|
|
|
|
---- 添加选中回调 (function(isSelected, cell) end)
|
|
function ScrollRectCenter:addSelectedCallback(callback)
|
|
self.selectedCallback = callback
|
|
end
|
|
|
|
function ScrollRectCenter:addOnCenterCallback(callback)
|
|
self.onCenterCallback = callback
|
|
end
|
|
|
|
function ScrollRectCenter:addOnLeaveCenterCallback(callback)
|
|
self.onLeaveCenterCallback = callback
|
|
end
|
|
|
|
function ScrollRectCenter:addOnBeginDragCallback(callback)
|
|
self.scrollRectCenter:AddOnBeginDragAction(callback)
|
|
end
|
|
|
|
function ScrollRectCenter:addOnEndDragCallback(callback)
|
|
self.scrollRectCenter:AddOnEndDragAction(callback)
|
|
end
|
|
|
|
---- *********************************************************************
|
|
|
|
function ScrollRectCenter:setTotalCount(count)
|
|
self.totalCount = count
|
|
self.scrollRectCenter:SetTotalCount(count)
|
|
end
|
|
|
|
function ScrollRectCenter:getTotalCount()
|
|
return self.totalCount or 0
|
|
end
|
|
|
|
---- 获取当前选中的index
|
|
function ScrollRectCenter:getSelectedIndex()
|
|
return self.scrollRectCenter:GetSelectedIndex() + 1
|
|
end
|
|
|
|
---- 设置当前选中的index
|
|
function ScrollRectCenter:setSelected(selectIndex)
|
|
self.scrollRectCenter:SetSelected(selectIndex - 1)
|
|
end
|
|
|
|
---- 设置缩放的变化比率 该值越小缩放越大
|
|
function ScrollRectCenter:setScaleRatio(ratio)
|
|
self.scrollRectCenter:SetScaleRatio(ratio)
|
|
end
|
|
|
|
---- 重新装填scrollRect (center 当前居中的index)
|
|
function ScrollRectCenter:refillCells(center)
|
|
local center = center or 1
|
|
self.scrollRectCenter:RefillCells(center - 1)
|
|
end
|
|
|
|
---- 刷新全部cell
|
|
function ScrollRectCenter:refreshAll()
|
|
self.scrollRectCenter:RefreshAll()
|
|
end
|
|
|
|
---- 朝左移动一个位置
|
|
function ScrollRectCenter:moveLeft()
|
|
self.scrollRectCenter:MoveLeft()
|
|
end
|
|
|
|
---- 朝右移动一个位置
|
|
function ScrollRectCenter:moveRight()
|
|
self.scrollRectCenter:MoveRight()
|
|
end
|
|
|
|
---- 移动到指定位置
|
|
function ScrollRectCenter:moveTo(index, immediately)
|
|
if immediately == nil then
|
|
immediately = false
|
|
end
|
|
self.scrollRectCenter:MoveTo(index - 1, immediately)
|
|
end
|
|
|
|
function ScrollRectCenter:getCenterIndex()
|
|
return self.centerIndex
|
|
end
|
|
|
|
function ScrollRectCenter:getCell(index)
|
|
return self.cellList[index]
|
|
end
|
|
|
|
function ScrollRectCenter:getCellCount()
|
|
return #self.cellList
|
|
end
|
|
|
|
function ScrollRectCenter:ResetCenterIndex()
|
|
self.scrollRectCenter:ResetCenterIndex()
|
|
end
|
|
|
|
return ScrollRectCenter
|