cocos2dx3.10 带滚动条的ScrollView和TableView
来源:互联网 发布:scala 知乎 编辑:程序博客网 时间:2024/05/22 00:05
scroview有2个虚方法:
virtual void scrollViewDidScroll(ScrollView* view):这是当scrollView在被拖动时会响应该函数;
virtual void scrollViewDidZoom(ScrollView* view):这是当scrollView在进行缩放时会响应该函数;
self._ScrollView = self:getWidget("ScrollView_1") -- self._ScrollView:setInertiaScrollEnabled(false) self._slider = self:getWidget("Slider_1") local function percentChangedEvent(sender,eventType) print(eventType) if eventType == ccui.SliderEventType.percentChanged then local slider = sender local percent = slider:getPercent() self._ScrollView:jumpToPercentVertical(percent) elseif eventType == ccui.SliderEventType.slideBallUp then -- self._displayValueLabel:setString("Slide Ball Up") elseif eventType == ccui.SliderEventType.slideBallDown then -- self._displayValueLabel:setString("Slide Ball Down") elseif eventType == ccui.SliderEventType.slideBallCancel then -- self._displayValueLabel:setString("Slide Ball Cancel") end end--[[ typedef enum{ --typedef: 0--8 SCROLLVIEW_EVENT_SCROLL_TO_TOP, SCROLLVIEW_EVENT_SCROLL_TO_BOTTOM, SCROLLVIEW_EVENT_SCROLL_TO_LEFT, SCROLLVIEW_EVENT_SCROLL_TO_RIGHT, SCROLLVIEW_EVENT_SCROLLING, SCROLLVIEW_EVENT_BOUNCE_TOP, SCROLLVIEW_EVENT_BOUNCE_BOTTOM, SCROLLVIEW_EVENT_BOUNCE_LEFT, SCROLLVIEW_EVENT_BOUNCE_RIGHT}ScrollviewEventType;]] local function scrollViewDidScroll(view) local pos = view:getInnerContainerPosition() local posy = math.abs(pos.y) local InnerSize = view:getInnerContainerSize() local ScrollViewSize = view:getContentSize() local scroTotalHeight = InnerSize.height - ScrollViewSize.height local percent = (posy/scroTotalHeight)*100 self._slider:setPercent(100-percent) end --[[ local function ScrollCallback(sender,eventType) if eventType == SCROLLVIEW_EVENT_SCROLLING then -- print("---scrolling-----") local pos = self._ScrollView:getInnerContainerPosition() -- print("---pos-----", pos.x, pos.y) local posy = math.abs(pos.y) local InnerSize = self._ScrollView:getInnerContainerSize() local ScrollViewSize = self._ScrollView:getContentSize() local scroTotalHeight = InnerSize.height - ScrollViewSize.height -- print("---InnerSize--ScrollViewSize-",InnerSize.width, InnerSize.height, ScrollViewSize.width, ScrollViewSize.height) local percent = (posy/scroTotalHeight)*100 self._slider:setPercent(100-percent) elseif eventType == SCROLLVIEW_EVENT_SCROLL_TO_TOP then -- print("---scroll to top-----") elseif eventType == SCROLLVIEW_EVENT_SCROLL_TO_BOTTOM then -- print("---scroll to bottom-----") end end --]] self._slider:addEventListener(percentChangedEvent) self._ScrollView:addEventListener(scrollViewDidScroll)
TableView:
local slider2 = self:getWidget("Slider2") local tableView = cc.TableView:create(cc.size(600,60)) tableView:setDirection(cc.SCROLLVIEW_DIRECTION_HORIZONTAL) tableView:setPosition(cc.p(350, 320)) tableView:setBounceable(false) tableView:setDelegate() self:addChild(tableView) local function scrollViewDidScroll(view) local posx = math.abs(tableView:getContentOffset().x) local innerWidth = 60*25 - 600 local percent = posx/innerWidth * 100 slider2:setPercent(percent) end local function scrollViewDidZoom(view) print("scrollViewDidZoom") end local function tableCellTouched(table,cell) print("cell touched at index: " .. cell:getIdx()) end local function cellSizeForTable(table,idx) return 60,60 end local function tableCellAtIndex(table, idx) local strValue = string.format("%d",idx) local cell = table:dequeueCell() local label = nil if nil == cell then cell = cc.TableViewCell:new() local sprite = cc.Sprite:create("testimages/Icon.png") sprite:setAnchorPoint(cc.p(0,0)) sprite:setPosition(cc.p(0, 0)) cell:addChild(sprite) label = cc.Label:createWithSystemFont(strValue, "Helvetica", 20.0) label:setPosition(cc.p(0,0)) label:setAnchorPoint(cc.p(0,0)) label:setTag(123) cell:addChild(label) else label = cell:getChildByTag(123) if nil ~= label then label:setString(strValue) end end return cell end local function numberOfCellsInTableView(table) return 25 end --registerScriptHandler functions must be before the reloadData funtion tableView:registerScriptHandler(numberOfCellsInTableView,cc.NUMBER_OF_CELLS_IN_TABLEVIEW) tableView:registerScriptHandler(scrollViewDidScroll,cc.SCROLLVIEW_SCRIPT_SCROLL) tableView:registerScriptHandler(scrollViewDidZoom,cc.SCROLLVIEW_SCRIPT_ZOOM) tableView:registerScriptHandler(tableCellTouched,cc.TABLECELL_TOUCHED) tableView:registerScriptHandler(cellSizeForTable,cc.TABLECELL_SIZE_FOR_INDEX) tableView:registerScriptHandler(tableCellAtIndex,cc.TABLECELL_SIZE_AT_INDEX) tableView:reloadData() local function percentChangedEvent2(sender,eventType) if eventType == ccui.SliderEventType.percentChanged then local slider = sender local percent = slider:getPercent()/100 local innerWidth = 60*25 - 600 local length = innerWidth*percent tableView:setContentOffset(cc.p(-length, 0),false) elseif eventType == ccui.SliderEventType.slideBallUp then elseif eventType == ccui.SliderEventType.slideBallDown then elseif eventType == ccui.SliderEventType.slideBallCancel then end end slider2:addEventListener(percentChangedEvent2)
1 0
- cocos2dx3.10 带滚动条的ScrollView和TableView
- 浅谈ListView自带的滚动条和ScrollView中嵌套ListView的区别
- tableView和scrollView滚动起冲突,tableview不能滚动
- android TextView 带滚动条,和ScrollView 用法(暂时觉得ScrollView滑动速度比较快)
- 滚动条:ScrollView和HorizontalScrollView
- 没有滚动条的ScrollView
- 去掉ScrollView的滚动条
- cocos2dx3.10的TableView的实现
- 让Android的输入框与文本框带滚动条ScrollView
- ScrollView,ListView等带滚动条控件嵌套解决方案汇总
- 带滚动条的table
- 带滚动条的表格
- 带滚动条的层
- 带滚动条的 DIV
- 带滚动条的div
- 带滚动条的层
- 带滚动条的DIV
- 带滚动条的表格
- 堆和栈的区别
- 生产环境中使用Docker Swarm的一些建议
- 利用windows批处理定期访问数据库远程备份文件【1】
- 回调函数
- 《暗时间》摘要心得2
- cocos2dx3.10 带滚动条的ScrollView和TableView
- 0507学习总结(结构体,共用体,枚举等)
- 【Unity】关于发射子弹、导弹追踪的逻辑(笔记)
- 3.4.1.2_光标的闪烁效果
- java中“53”个关键字(含2个保留字)
- JVM(四) 类的加载
- android闪屏动画
- SpringMVC+Hibernate+Struts2开发环境
- WinForm简单的打包和部署