当前位置:网站首页>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
边栏推荐
- mysql审计日志归档
- China needle coke industry development research and investment value report (2022 Edition)
- AutoCAD -- dimension break
- How to choose a panoramic camera that suits you?
- Unity and database
- Create a pyGame window with a blue background
- Establish cloth effect in 10 seconds
- Unity3d learning notes
- Research and forecast report on China's solution polymerized styrene butadiene rubber (SSBR) industry (2022 Edition)
- On-off and on-off of quality system construction
猜你喜欢
AutoCAD - continuous annotation
Minor spanning tree
质量体系建设之路的分分合合
[Business Research Report] Research Report on male consumption trends in other economic times -- with download link
Create a pyGame window with a blue background
2022 thinking of mathematical modeling D problem of American college students / analysis of 2022 American competition D problem
2022/7/2做题总结
2022 thinking of mathematical modeling a problem of American college students / analysis of 2022 American competition a problem
AutoCAD - stretching
Download the details and sequence of the original data access from the ENA database in EBI
随机推荐
2022/7/2做题总结
AutoCAD - scaling
Minor spanning tree
Common database statements in unity
Flink cluster configuration
JMeter -- distributed pressure measurement
2022 thinking of mathematical modeling a problem of American college students / analysis of 2022 American competition a problem
[Business Research Report] Research Report on male consumption trends in other economic times -- with download link
The 22nd Spring Festival Gala, an immersive stage for the yuan universe to shine into reality
Rip notes [rip message security authentication, increase of rip interface measurement]
質量體系建設之路的分分合合
Fluent objects and lists
China as resin Market Research and investment forecast report (2022 Edition)
stm32Cubemx(8):RTC和RTC唤醒中断
AutoCAD - workspace settings
3dsmax common commands
2021 electrician cup (the 12th "China Society of electrical engineering Cup" National Undergraduate electrician mathematical modeling) detailed ideas + codes + references
#775 Div.1 B. Integral Array 数学
Unity parallax infinite scrolling background
669. 修剪二叉搜索树 ●●