当前位置:网站首页>cocos_ Lua listview loads too much data
cocos_ Lua listview loads too much data
2022-07-05 04:56:00 【Meteor spot】
establish QuickCell file
local QuickCell = class("QuickCell", function()
return ccui.Widget:create()
end)
-- self._data.wid default 100
-- self._data.hei default 50
-- self._data.anchor default {x=0, y=0}
-- self._data.tick_interval default 0.02
-- self._data.activeEvent default inview
-- self._data.createCell default nil
function QuickCell:ctor()
self._entered = false
self._active = true
end
function QuickCell:Create( data )
local cell = QuickCell.new()
if cell and cell:Init( data ) then
return cell
end
return nil
end
function QuickCell:Init( data )
self._data = data
local wid = self._data.wid or 100
local hei = self._data.hei or 50
local anchor = self._data.anchor or {x=0, y=0}
self:setContentSize( {width = wid, height = hei} )
self:setAnchorPoint( anchor )
self:Active()
return true
end
function QuickCell:Update( data )
local createCell = data.createCell
self._data.createCell = createCell
-- Perform the following exit , Easy to refresh immediately
self:Exit()
end
function QuickCell:Enter()
if self._entered then
return false
end
self._entered = true
local createCell = self._data.createCell
local wid = self._data.wid or 100
local hei = self._data.hei or 50
if not createCell then
return false
end
local cell = createCell()
if tolua.isnull(self) then
return
end
self:addChild( cell )
if not self._data.nobool then
cell:setAnchorPoint({x=0.5, y=0.5})
cell:setPosition({x=wid/2, y=hei/2})
end
end
function QuickCell:Exit()
if not self._entered then
return false
end
self._entered = false
self:removeAllChildren()
end
function QuickCell:Refresh()
if not self._active then
return false
end
local active = true
local activeEvent = self._data.activeEvent
if activeEvent then
active = activeEvent()
elseif self._data.eventX then
local viewSize = global.Director:getVisibleSize()
local pos = self:getWorldPosition()
local wid = self._data.wid or 100
local hei = self._data.hei or 50
active = not ( pos.x >= viewSize.width + wid or pos.x <= -wid )
else
local viewSize = global.Director:getVisibleSize()
local pos = self:getWorldPosition()
local wid = self._data.wid or 100
local hei = self._data.hei or 50
active = not ( pos.y >= viewSize.height + hei or pos.y <= -hei )
end
if active then
self:Enter()
else
self:Exit()
end
end
function QuickCell:Active()
self._active = true
local tick_interval = self._data.tick_interval or 0.02
self:stopAllActions()
schedule(self, function()
self:Refresh()
end, tick_interval)
end
function QuickCell:Sleep()
self._active = false
self:stopAllActions()
end
return QuickCell
Use in another file :
local QuickCell = requireUtil("QuickCell")
function ActivityLayer:InitUI()
local size = self.Panel_item:getContentSize()
-- self.ListView_left:removeAllChildren()
for i,v in pairs(self.needData) do
local item = self.ListView_left:getItem(i-1)
if not item then
local cell_data = {}
cell_data.wid = size.width
cell_data.hei = size.height
cell_data.createCell = function()
local cell = self:CreateCell(i,v)
return cell
end
item = QuickCell:Create(cell_data)
item:setName(i)
self.ListView_left:pushBackCustomItem(item)
end
item = UIGetChildByName(item, "item")
if item then -- Refresh data only
item = ui_delegate(item)
self:updateItem(item , v ,i, true)
end
end
self.ListView_left:setSwallowTouches(false)
self.ListView_left:forceDoLayout()
end
function ActivityLayer:CreateCell(index , v )
local item = self.Panel_item:cloneEx()
item:setVisible(true)
item:setName("item")
item = ui_delegate(item)
self:updateItem(item, v,index)
return item.nativeUI
end
function ActivityLayer:updateItem(item , data ,index,isUp )
local listView = item.ListView_icon
listView:setClippingType(0)
listView:setSwallowTouches(false) -- nesting listView Slide conflict resolution
if not isUp then -- Only modify the status without regenerating
listView:removeAllChildren()
end
local rewardata = data.reward
if rewardata and not isUp then
for i,v in pairs(rewardata) do
local item1 = self.Panel_item_icon:cloneEx()
local goods = GoodsItem:create({itemId=tonumber(v.itemId), count=tonumber(v.count), look=true})
goods:setAnchorPoint(cc.p(0,0))
goods:setItemTouchSwallow(false)
goods:setScale(0.8)
item1:getChildByName("Image_icon"):addChild(goods)
item1:setVisible(true)
listView:pushBackCustomItem(item1)
end
end
item.Image_lingqu:setVisible(false)
item.Button_go:addClickEventListener(function(sender)
end)
end
边栏推荐
- UE4/UE5 虚幻引擎,材质篇(三),不同距离的材质优化
- AutoCAD - workspace settings
- 2021 electrician cup idea + code - photovoltaic building integration plate index development trend analysis and prediction: prediction planning issues
- Emlog博客主题模板源码简约好看响应式
- Thematic information | carbon, carbon neutrality, low carbon, carbon emissions - 22.1.9
- [groovy] closure closure (customize closure parameters | customize a single closure parameter | customize multiple closure parameters | specify the default value of closure parameters)
- Dotween usage records ----- appendinterval, appendcallback
- Group counting notes (1) - check code, original complement multiplication and division calculation, floating point calculation
- JVM 原理和流程简介
- Fluent objects and lists
猜你喜欢
Solution of circular dependency
How to choose a panoramic camera that suits you?
PostgreSQL surpasses mysql, and the salary of "the best programming language in the world" is low
Use assimp library to read MTL file data
質量體系建設之路的分分合合
2022/7/2做题总结
LeetCode之单词搜索(回溯法求解)
AutoCAD - feature matching
UE4/UE5 虚幻引擎,材质篇,纹理,Compression and Memory压缩和内存
Unity check whether the two objects have obstacles by ray
随机推荐
Error statuslogger log4j2 could not find a logging implementation
2022 thinking of Mathematical Modeling B problem of American college students / analysis of 2022 American competition B problem
Thinking of 2022 American College Students' mathematical modeling competition
LeetCode之單詞搜索(回溯法求解)
"Measuring curve length" of CAD dream drawing
stm32Cubemx(8):RTC和RTC唤醒中断
【acwing】836. Merge sets
Panel panel of UI
AutoCAD - continuous annotation
[groovy] closure closure (customize closure parameters | customize a single closure parameter | customize multiple closure parameters | specify the default value of closure parameters)
Thematic information | carbon, carbon neutrality, low carbon, carbon emissions - 22.1.9
MD5绕过
2022 thinking of mathematical modeling C problem of American college students / analysis of 2022 American competition C problem
中国艾草行业研究与投资前景预测报告(2022版)
UE4/UE5 虚幻引擎,材质篇,纹理,Compression and Memory压缩和内存
2022 thinking of mathematical modeling D problem of American college students / analysis of 2022 American competition D problem
[groovy] closure (closure parameter list rule | default parameter list | do not receive parameters | receive custom parameters)
Personal required code
[groovy] closure (closure as function parameter | code example)
AutoCAD - set layer