cocos2d-x ScrollView的滑动区调整

来源:互联网 发布:传奇霸业魔麒麟数据 编辑:程序博客网 时间:2024/06/15 13:23

动态调整SCROLLVIEW

最近在做项目的过程中碰到一个关于SCROLLVIEW的问题
让我们来看看这个问题
首先SCROLLVIEW有一个INNERCONTANTSIZE,也就是滑动区域大小,滑动区域大小是要比Scrollview自身要大的,而且只能大于等于自身,不能小,如果你强行设置为小于也会自动设置为自身大小。

这里写图片描述

黄色区域为滑动区域,自身大小为白框,一般为了好看,我们会裁切掉白框以下的内容,只有用户滑动的时候才能看到。

这里问题来了:我们来看看,如果我们的文本框超出了scrollview的大小会发生什么:
看不懂LUA的同学看我注释就好

    //给文本框设置内容 相当于Text * text= Text::create("...");    self.layer["Text_Explain"]:setString("规则说明\n规则说明\n规则说明\n规则说明\n规则说明\n")    //int textSzie = Scrollview->getChildByName("Text_Explain")->getContentSize();    local textSize = self.layer["Text_Explain"]:getContentSize()    //设置文本框的位置self.layer["Text_Explain"]:setPosition(ccp(4,self.layer["ScrollView_Explain"]:getInnerContainerSize().height-8))//设置锚点    self.layer["Text_Explain"]:setAnchorPoint(ccp(0,1))

这里写图片描述

看到了吗,当我们往下拉的时候是会回弹的,但往上拉的时候,内容就消失在视野中了,
百思不得其姐。。
打印LOG,查看滑动区域大小,380,文本大小250
但是我们设置得滑动区域是在下面的,为什么滑到上面消失了呢。。这个就是COCOS的设计了,不太清楚,有清楚的可以评论一波告诉我。。
按照我的想法,应该是往上顶不会出去,往下拉会往下走。
我打印了一下文本框的位置,发现文本框的位置在滑动的时候根本不会改变。也就是说,会滑动到上面,是滑动区域在走(相对于父控件Scrollview的位置没变,所以位置不变)

这里给出解决方案
在代码中加上一句代码就搞定了,把滑动区域设置成比文本框要小的一个区域。
//这个比例系数大家可以自己调,根据项目而定,如何计算呢
550 : 300
1.831:1
400 :220
1.81
左边的数字是文本框,右边的是滑动框大小
我一开始的计算是400 - 180 = 220
550-250 = 300
计算了两个之后发现比例差不都稳定在1.8左右。
self.layer[“ScrollView_Explain”]:setInnerContainerSize(cc.size(widht,textSize.height/1.83))

设置好了之后上滑也就没问题了。

这里写图片描述

这里写图片描述

原创粉丝点击