当前位置:网站首页>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
边栏推荐
- django连接数据库报错,这是什么原因
- C # perspective following
- Out and ref functions of unity
- Redis 排查大 key 的4种方法,优化必备
- Basic knowledge points of dictionary
- An article takes you to thoroughly understand descriptors
- 【Leetcode】1352. 最后 K 个数的乘积
- Common technologies of unity
- Unity parallax infinite scrolling background
- C4D simple cloth (version above R21)
猜你喜欢

2021 Higher Education Club Cup mathematical modeling national tournament ABCD problem - problem solving ideas

AutoCAD - Center zoom

Establish cloth effect in 10 seconds

Wan broadband access technology V EPON Technology

PostgreSQL 超越 MySQL,“世界上最好的编程语言”薪水偏低

2022 thinking of Mathematical Modeling B problem of American college students / analysis of 2022 American competition B problem

xss注入
![[groovy] closure (closure parameter binding | curry function | rcurry function | ncurry function | code example)](/img/90/0cf08ae6fea61891e3e1fdf29d310c.jpg)
[groovy] closure (closure parameter binding | curry function | rcurry function | ncurry function | code example)
![[groovy] closure (closure parameter list rule | default parameter list | do not receive parameters | receive custom parameters)](/img/36/c4206a95c007e41df628d99e06ba18.jpg)
[groovy] closure (closure parameter list rule | default parameter list | do not receive parameters | receive custom parameters)

LeetCode之單詞搜索(回溯法求解)
随机推荐
Special information | finance, accounting, audit - 22.1.23
Solution of circular dependency
Unity sends messages and blocks indecent words
[groovy] closure (closure call | closure default parameter it | code example)
2021 electrician cup (the 12th "China Society of electrical engineering Cup" National Undergraduate electrician mathematical modeling) detailed ideas + codes + references
【acwing】240. food chain
C iterator
Minor spanning tree
用 Jmeter 工具做个小型压力测试
Redis has four methods for checking big keys, which are necessary for optimization
jmeter -- 分布式压测
PostgreSQL surpasses mysql, and the salary of "the best programming language in the world" is low
Introduce Hamming distance and calculation examples
2022 thinking of mathematical modeling D problem of American college students / analysis of 2022 American competition D problem
On-off and on-off of quality system construction
中国溶聚丁苯橡胶(SSBR)行业研究与预测报告(2022版)
2021 huashubei mathematical modeling idea + reference + paper
Autocad-- Real Time zoom
Rip notes [rip message security authentication, increase of rip interface measurement]
Unity synergy