只为菜鸟 cocos2dx-lua 实现Scrollview (vs2013)

以前自己是学quick lua的 现在改用原型的lua了 所以整理一些资料,为初学者提供方便。当然你也可以去看lua-tests里面也很详细。
首先创建scrollview
local scrollview=ccui.ScrollView:create()
scrollview:setTouchEnabled(true)
scrollview:setBounceEnabled(true) –这句必须要不然就不会滚动噢
scrollview:setDirection(ccui.ScrollViewDir.vertical) –设置滚动的方向
scrollview:setContentSize(cc.size(800,500)) –设置尺寸
scrollview:setPosition(cc.p(display.cx,display.cy))
scrollview:setAnchorPoint(cc.p(0.5,0.5))
scrollview:setScrollBarWidth(30) –滚动条的宽度
scrollview:setScrollBarColor(cc.RED) –滚动条的颜色
scrollview:setScrollBarPositionFromCorner(cc.p(2,2))
self._uilayer:addChild(scrollview) –这里我是加在层上的你可以直接self:addChild(scrollview)

   local function scrollviewEvent(sender,eventType)
   if eventType==ccui.ScrollviewEventType.scrollToBottom then
       print("滚动到底部噢")
   elseif eventType==ccui.ScrollviewEventType.scrollToTop then
      print("滚动到顶部噢")
   end
   end
   scrollview:addTouchEventListener(scrollviewEvent)
   local innerWidth=scrollview:getContentSize().width
   local innerHeight=scrollview:getContentSize().height

  scrollview:setInnerContainerSize(cc.size(innerWidth,innerHeight))

  local btn_01=ccui.Button:create() 创建一个button加在scrollview上
  btn_01:loadTextures("button_1020@2x.png","button_1019@2x.png")
  btn_01:setPosition(cc.p(innerWidth/2,
  scrollview:getInnerContainerSize().height-btn_01:getContentSize().height/2))
  scrollview:addChild(btn_01)
  btn_01:addTouchEventListener(function (sender,event)  
   if event==ccui.TouchEventType.began then
      print("点击开始")
   end
   if event==ccui.TouchEventType.ended then
      print("点击了第一个按钮,跳转到一个层")
   local layer=cc.Layer:create()
   local layer_bg=cc.Sprite:create("panle_1072@2x.png")
   layer_bg:setPosition(cc.p(display.cx,display.cy))
   layer:addChild(layer_bg, 2)
   self:addChild(layer,2)
 end

end)
你也可以在加上几个按钮图片什么的。
我加了三个按钮和一张图,明显看到可以滑动。简单的scrollview就实现了
(https://img-blog.csdn.net/20160506151109699)

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
cocos2dx-lua中,可以使用ScrollView只显示可视区域的内容,以提高游戏性能。实现方式如下: 1. 创建一个ScrollView,并设置其大小和位置。 ```lua local scrollView = ccui.ScrollView:create() scrollView:setContentSize(cc.size(500, 500)) scrollView:setPosition(cc.p(0, 0)) ``` 2. 设置ScrollView的滚动方向和滚动条位置。 ```lua scrollView:setDirection(ccui.ScrollViewDir.vertical) scrollView:setScrollBarPositionFromCorner(cc.p(7, 7)) ``` 3. 创建一个容器,用于存储要加载的内容。 ```lua local container = ccui.Layout:create() container:setContentSize(cc.size(500, 1000)) scrollView:addChild(container) ``` 4. 定义一个函数,用于加载每一项内容到容器中。 ```lua local function loadItem(index) local item = ccui.Text:create() item:setString("Item " .. index) item:setPosition(cc.p(250, 1000 - index * 50)) container:addChild(item) end ``` 5. 在ScrollView的回调函数中,根据滚动位置动态加载内容,并移除不在可视区域的内容项。 ```lua local function scrollViewEvent(sender, eventType) if eventType == ccui.ScrollviewEventType.scrolling then local pos = scrollView:getInnerContainer():getPosition() local top = scrollView:getContentSize().height local bottom = top - scrollView:getInnerContainerSize().height for i = container:getChildrenCount(), 1, -1 do local item = container:getChildren()[i] local itemPos = item:convertToWorldSpace(cc.p(0, 0)) if itemPos.y < 0 or itemPos.y > top then item:removeFromParent() end end if pos.y < bottom + 500 then for i = 1, 10 do loadItem(i) end end end end scrollView:addScrollViewEventListener(scrollViewEvent) ``` 这样,在滚动ScrollView时,只会显示可视区域内的内容,不在可视区域内的内容会被自动移除。通过移除不需要显示的内容项,可以避免ScrollView中的内容过多导致游戏卡顿。可以根据实际需求调整每次加载的内容数量和内容项的布局样式,以及移除不需要显示的内容项的逻辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值