近期工作遇到的问题及解决方式收藏

这篇博客总结了工作中遇到的FairyGUI相关问题,包括列表动效逐一播放的解决方案,AB模式下FairyGUI渲染问题的分析与处理,以及使用Lua实现的翻牌效果。通过代码示例,详细阐述了每个问题的解决思路和方法。
摘要由CSDN通过智能技术生成

第一篇博客还是要有点干货的
工作半年,遇到问题不少,这里归总一下:

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值