加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

cocos2d-x lua 使用ListView

发布时间:2020-12-14 21:27:42 所属栏目:百科 来源:网络整理
导读:cocos2d-x lua 使用ListView version: cocos2d-x 3.6 本文主要讲述:使用Cocos Studio创建ListView,和列表项的模板,代码中通过模板创建列表的每一项,并替换其中的图片文字等。 1. 加载Cocos Studio编辑好的资源 -- //cocos studio 中资源的名字 M .srcLay

cocos2d-x lua 使用ListView

version: cocos2d-x 3.6


本文主要讲述:使用Cocos Studio创建ListView,和列表项的模板,代码中通过模板创建列表的每一项,并替换其中的图片文字等。


1. 加载Cocos Studio编辑好的资源

-- //cocos studio 中资源的名字
M.srcLayer = {
    ["listView"] = "list_view",["btnFriends"] = "button_friends",["btnAround"] = "button_around",}
M.srcListItem = {
    ["bg"] = "image_bg",["img"] = "image_head",["name"] = "lable_name",["meter"] = "lable_meter",}

function M:loadLayout()
    if self.m_resNode then
        self.m_resNode:removeSelf()
        self.m_resNode = nil
    end
    self.m_resNode = cc.CSLoader:createNode("ui/layer_test_listview.csb")  -- //load your layout csb
    assert(self.m_resNode,string.format("ViewBase:createResourceNode() - load resouce node from file "%s" failed",resourceFilename))   
    self:addChild(self.m_resNode)

    local listView = self.m_resNode:getChildByName(M.srcLayer.listView)
end

2. 更新ListView的每一项

function M:refreshListView()
    local listView = self.m_resNode:getChildByName(M.srcLayer.listView)
    assert(listView,"")
    listView:removeAllChildren()


    local friendList = {
        {["id"]="1234567890",["name"]="testName",["picture"]="test.png"},{["id"]="1234567890",}
    for idx,oneFriend in pairs(friendList) do

        -- //加载模板项
        local oneItem = cc.CSLoader:createNode("ui/layer_test_listview_item.csb")

        local imgBg = oneItem:getChildByName(M.srcListItem.bg)
        local imgHead = oneItem:getChildByName(M.srcListItem.img)
        local lableName = oneItem:getChildByName(M.srcListItem.name)
        local lableMeter = oneItem:getChildByName(M.srcListItem.meter)
        -- //reset
        --imgHead:initWithFileName(oneFriend.picture) --//imgHead是精灵类Sprite
        lableName:setString(friendInfo.name)
        --lableMeter:setString(tostring(oneFriend.meter))

        --//create layout
        local listItemLayout = ccui.Layout:create()
        listItemLayout:setContentSize(imgBg:getContentSize())
        listItemLayout:addChild(oneItem)
        oneItem:setPosition(cc.p(listItemLayout:getContentSize().width / 2.0,listItemLayout:getContentSize().height / 2.0))
        listItemLayout:setTag(idx)
        listView:insertCustomItem(listItemLayout,0)
    end
end

3. 其他

  • 如果想在代码里面创建listview和它的每一个列表项,可直接参照lua test里面的代码
  • 注意编辑cocos studio资源的时候不要去拖动每一个空间的4个顶点去缩放它
  • 使用page view 和 table view 类似

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读