cocos2dx lua scrollView & AnchorPoint

一、AnchorPoint

以下以图片的显示为例

1、anchor的默认设置时(0,0)即图片的左下角在坐标(0, 0)的位置。

2、(0.5, 0.5)即图片的x轴的中心在原点,y轴的中心也在原点。

3、(1, 1) 即图片的右上角在坐标的(0, 0)位置。

4、(x,y) 的范围一般在0~1之间。

当要设置图片的位置的时候需要先设置好anchor,即跟原点的相对位置。

 

二、scrollView

    local scrollView = ccui.ScrollView:create();
    scrollView:setName("scrollView");
    scrollView:setAnchorPoint(0.5, 1);
    scrollView:setTouchEnabled(true); -- 
    scrollView:setBounceEnabled(true); -- 使能能够让界面在到最边界的时候能够反弹
    -- scrollView:setDirection(cc.SCROLLVIEW_DIRECTION_BOTH); -- 横向移动才设置

如上设置的是竖向的滚动,如果需要横向的滚动则需要添加注释的设置。

    local height1 = getRealContentSize(descLabel).height;
    local height2 = getRealContentSize(bonus_panel).height;

    local height = 20 + height1 + height2;

假设descLabel跟bonus_panel已经添加到scrollview里面了,这里计算总的控件的高度。为了设置scrollView的InnerContainerSize,即scrollView内部的可移动的大小。

 

local scrollHeight = math.min(INIT_SCROLL_HEIGHT, height); -- 
    scrollView:setContentSize(INIT_SCROLL_WIDTH, scrollHeight); -- 设置咱们可视区域的大小
    scrollView:setInnerContainerSize(cc.size(INIT_SCROLL_WIDTH,  height)); --设置控件的内部可移动区域的大小

当设置完成之后,需要设置添加到scrollView里面的sprite的位置,否则会所有的叠加到一起

descLabel:setPosition(cc.p(posX, height));
bonus_panel:setPosition(cc.p(0, height - height1));

因为相对的是左下角的原点(scrollView的InnerContainer没有设置相对位置),所以以inner的左下角为原点进行设置控件相对位置。

 

posted @   LCAC  阅读(457)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
点击右上角即可分享
微信分享提示