TableView
在cocos2d-x中集成了一些扩展插件,这些引用文件都可以在cocos2d-x目录下的extentions下找到,其中常用的scrollView和tableView的引用文件在GUI目录下。若想深入理解scrollView和tableView,可参考这两篇博文:cocos2d-x学习日志(7) --CCScrollView和CCTableView的使用 和 cocos2d-x 菜鸟学习笔记七(界面控件之scrollView与tableView)
但本教程,不详细介绍了。直接上代码:
-- for CCLuaEngine traceback function __G__TRACKBACK__(msg) print("----------------------------------------") print("LUA ERROR: " .. tostring(msg) .. "\n") print(debug.traceback()) print("----------------------------------------") end local function main() -- avoid memory leak collectgarbage("setpause", 100) collectgarbage("setstepmul", 5000) local cclog = function(...) print(string.format(...)) end require "hello2" cclog("result is " .. myadd(3, 5)) --------------- local function createTest() local TestLayer = CCLayer:create() local proxy = LuaProxy:create() proxy:retain() -- hold the proxy, while the button gone, release the proxy. local n = proxy:readCCBFromFile("ccbResources/ccb/Test.ccbi") -- Got a CCNode local l = tolua.cast(n, "CCLayer") -- Cast the node into CCLayer TestLayer:addChild(l) --绑定一个node节点 local NodeBg = tolua.cast(proxy:getNode"NodeBg","CCNode") local data = {} for i = 1,10 do table.insert(data,"Data"..i) end --装入tableview的数据源 local h = LuaEventHandler:create(function(fn, table, a1, a2) local r if fn == "cellSize" then r = CCSizeMake(480,30) --每格的尺寸 elseif fn == "cellAtIndex" then -- 请求“格”对象,a1是格索引(从0开始),a2是缓存的格对象(可能为空) -- 在此建立“格”对象并填充其要显示的内容。 if not a2 then a2 = CCTableViewCell:create() -- Build cell struct, just like load ccbi or add sprite -- 建立“格”对象的结构,不要在此设定其显示的内容。 a2:addChild(CCLabelTTF:create("", "Arial", 20), 0, 1) --这里就相当cell容器,可以装入ccbi层、精灵、菜单等控件 local spriteDemo = CCSprite:create("btn-back-0.png") spriteDemo:setAnchorPoint(ccp(0,0)) a2:addChild(spriteDemo) end -- 修改“格”对象的内容 tolua.cast(a2:getChildByTag(1), "CCLabelTTF"):setString(data[a1 + 1]) r = a2 elseif fn == "numberOfCells" then r = #data -- Cell events: -- 表格事件: elseif fn == "cellTouched" then -- A cell was touched, a1 is cell that be touched. This is not necessary. elseif fn == "cellTouchBegan" then -- A cell is touching, a1 is cell, a2 is CCTouch elseif fn == "cellTouchEnded" then -- A cell was touched, a1 is cell, a2 is CCTouch elseif fn == "cellHighlight" then -- A cell is highlighting, coco2d-x 2.1.3 or above elseif fn == "cellUnhighlight" then -- A cell had been unhighlighted, coco2d-x 2.1.3 or above elseif fn == "cellWillRecycle" then -- A cell will be recycled, coco2d-x 2.1.3 or above end return r end) --创建tableview local t = LuaTableView:createWithHandler(h,CCSizeMake(480,200)) t:setBounceable(true) --节点定位tableview NodeBg:addChild(t,1) return TestLayer end -- run local sceneGame = CCScene:create() sceneGame:addChild(createTest()) CCDirector:sharedDirector():runWithScene(sceneGame) end xpcall(main, __G__TRACKBACK__)
转载请注明出处:http://blog.csdn.net/rexuefengye/article/details/16355571