第一篇博客还是要有点干货的
工作半年,遇到问题不少,这里归总一下:
1.FairyGUI列表动效逐一播放问题
直接上代码
注册列表渲染及点击事件
function DlgWelfare:BindEvent()
--选项列表
self.listChooseReward.itemRenderer = function(...) self:itemRenderer_listChooseReward(...) end
end
在上一级点击事件回调时填充列表item
function DlgWelfare:onClickItem_listChooseType(context)
--设置动效播放的时候事先设置为不可触碰(在虚拟列表中,动效播放过程拖动列表会导致index错乱)
self.listChooseReward.touchable = false
--设置初始填数量为0,便于计算不同情况下list的items填充数量
self.renderItemCount = 0
self.listChooseReward.numItems = #self.mCurDetail
local numList = self.listChooseReward.numItems
--设置播放时间取预计时间和正常列表播放时间的最小值
self:_PlayAnimation(math.min(self.renderItemCount, numList))
end
在列表填充的时候,每一次填充都会调用里面的方法
---@param obj CompWelfareItem
--“---”注释是EmmyLua的特定用法
function DlgWelfare:itemRenderer_listChooseReward(index, obj)
--每次填充list中的item数量都+1
self.renderItemCount = self.renderItemCount + 1
local playing = (not self.listChooseReward.touchable)
--通过obj传入数据,用obj指向的控件写SetItem方法调用传入的数据
obj:SetItem(self.mCurDetail[index + 1], playing)
end
调用的播放动效
---@param loop number @循环次数
function DlgWelfare:_PlayAnimation(loop)
--播放时列表设置为可见
self.listChooseReward.visible = true
--在播放前如果存在计时器,事先把计时器停止再开启。
if self.timer then