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 @ 2020-07-22 09:35  LCAC  阅读(473)  评论(0)    收藏  举报