日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(原创)cocos2dx-lua TableView官方demo分析

發(fā)布時間:2025/4/14 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (原创)cocos2dx-lua TableView官方demo分析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本來是想看看網(wǎng)上的教程文章,結(jié)果看了好幾篇,復制代碼各種報錯,有很多不存在的類和變量,根本用不了。

所以干脆自己去看官方demo,經(jīng)過自己分析測試,已經(jīng)大概會用了,順便記錄一下。

以下是代碼,復制粘貼就能運行的那種!(圖片資源自備)

?

新建 ?tableviewTest.lua,把下面的代碼復制進去,保存為utf8格式。在需要的地方(比如main()函數(shù)里)調(diào)用?require("tableviewTest")

local TableViewTestLayer = class("TableViewTestLayer") TableViewTestLayer.__index = TableViewTestLayer--這里是為了讓layer能調(diào)用TableViewTestLayer的方法 function TableViewTestLayer.extend(target)local t = tolua.getpeer(target)if not t thent = {}tolua.setpeer(target, t)endsetmetatable(t, TableViewTestLayer)return target end--滾動事件 function TableViewTestLayer.scrollViewDidScroll(view)--print("滾動事件") endfunction TableViewTestLayer.scrollViewDidZoom(view)print("scrollViewDidZoom") end--cell點擊事件 function TableViewTestLayer.tableCellTouched(table,cell)print("點擊了cell:" .. cell:getIdx()) end--cell的大小,注冊事件就能直接影響界面,不需要主動調(diào)用 function TableViewTestLayer.cellSizeForTable(table,idx) return 150,150 end--顯示出可視部分的界面,出了裁剪區(qū)域的cell就會被復用 function TableViewTestLayer.tableCellAtIndex(table, idx)local strValue = string.format("%d",idx)print("數(shù)據(jù)加載"..strValue)local cell = table:dequeueCell()local label = nilif nil == cell thenprint("創(chuàng)建了新的cell")cell = cc.TableViewCell:new()--添加cell內(nèi)容local sprite = cc.Sprite:create("res/tablecell.png")sprite:setAnchorPoint(cc.p(0,0))sprite:setPosition(cc.p(0, 0))cell:addChild(sprite)label = cc.Label:createWithSystemFont(strValue, "Helvetica", 40)label:setPosition(cc.p(0,0))label:setAnchorPoint(cc.p(0,0))label:setColor(cc.c3b(255,0,0))label:setTag(123)cell:addChild(label)elseprint("使用已經(jīng)創(chuàng)建過的cell")label = cell:getChildByTag(123)if nil ~= label thenlabel:setString(strValue)endendreturn cell end--設置cell個數(shù),注冊就能生效,不用主動調(diào)用 function TableViewTestLayer.numberOfCellsInTableView(table)return 100 endfunction TableViewTestLayer:init()local winSize = cc.Director:getInstance():getWinSize()--創(chuàng)建TableViewlocal tableView = cc.TableView:create(cc.size(600,200))--設置滾動方向 水平滾動 tableView:setDirection(cc.SCROLLVIEW_DIRECTION_HORIZONTAL)tableView:setPosition(cc.p(20, winSize.height / 2 - 150))tableView:setDelegate()self:addChild(tableView)--registerScriptHandler functions must be before the reloadData funtion--注冊腳本編寫器函數(shù)必須在reloadData函數(shù)之前(有道自動翻譯)--cell個數(shù) tableView:registerScriptHandler(TableViewTestLayer.numberOfCellsInTableView,cc.NUMBER_OF_CELLS_IN_TABLEVIEW) --滾動事件 tableView:registerScriptHandler(TableViewTestLayer.scrollViewDidScroll,cc.SCROLLVIEW_SCRIPT_SCROLL)tableView:registerScriptHandler(TableViewTestLayer.scrollViewDidZoom,cc.SCROLLVIEW_SCRIPT_ZOOM)--cell點擊事件 tableView:registerScriptHandler(TableViewTestLayer.tableCellTouched,cc.TABLECELL_TOUCHED)--cell尺寸、大小 tableView:registerScriptHandler(TableViewTestLayer.cellSizeForTable,cc.TABLECELL_SIZE_FOR_INDEX)--顯示出可視部分的cell tableView:registerScriptHandler(TableViewTestLayer.tableCellAtIndex,cc.TABLECELL_SIZE_AT_INDEX)--調(diào)用這個才會顯示界面 tableView:reloadData()-------------------------------------------------------------跟上面差不多,這里是創(chuàng)建一個“垂直滾動”的TableViewtableView = cc.TableView:create(cc.size(200, 350))tableView:setDirection(cc.SCROLLVIEW_DIRECTION_VERTICAL)tableView:setPosition(cc.p(winSize.width - 150, winSize.height / 2 - 150))tableView:setDelegate()tableView:setVerticalFillOrder(cc.TABLEVIEW_FILL_TOPDOWN)self:addChild(tableView)tableView:registerScriptHandler(TableViewTestLayer.scrollViewDidScroll,cc.SCROLLVIEW_SCRIPT_SCROLL)tableView:registerScriptHandler(TableViewTestLayer.scrollViewDidZoom,cc.SCROLLVIEW_SCRIPT_ZOOM)tableView:registerScriptHandler(TableViewTestLayer.tableCellTouched,cc.TABLECELL_TOUCHED)tableView:registerScriptHandler(TableViewTestLayer.cellSizeForTable,cc.TABLECELL_SIZE_FOR_INDEX)tableView:registerScriptHandler(TableViewTestLayer.tableCellAtIndex,cc.TABLECELL_SIZE_AT_INDEX)tableView:registerScriptHandler(TableViewTestLayer.numberOfCellsInTableView,cc.NUMBER_OF_CELLS_IN_TABLEVIEW)tableView:reloadData()return true end--這里是為了讓layer能調(diào)用TableViewTestLayer的方法 function TableViewTestLayer.create()local layer = TableViewTestLayer.extend(cc.Layer:create())if nil ~= layer thenlayer:init()endreturn layer end--運行測試場景 function runTableViewTest()local newScene = cc.Scene:create()local newLayer = TableViewTestLayer.create()newScene:addChild(newLayer)cc.Director:getInstance():replaceScene(newScene)--return newScene endrunTableViewTest()return TableViewTestLayer

?

轉(zhuǎn)載于:https://www.cnblogs.com/mingfuqishi/p/9284482.html

總結(jié)

以上是生活随笔為你收集整理的(原创)cocos2dx-lua TableView官方demo分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。