[cocos2dx]计算scrollview元素的index
2014-09-22 14:45
183 查看
scrollview的原生代码没有提供元素对齐功能
通过下面介绍的index计算方法以及scrollview自带的设置位置方法
void setContentOffsetInDuration(CCPoint offset, float dt);
我们便可以轻松实现元素对齐功能。
一、scrollview界面设计
容器选用CCMenu,屏幕高度为640,每个item之间间距为320。
item的y坐标设置为itemHeight * (1-i);
屏幕中部的index为默认值
效果设计如图所示
index 为 0 的情况
index为1的情况
由此可得一个对应关系
所以有
但是由于强制转换的算法限制,在正数范围内此方法成立,在值为负数时情况有所不同
当值在-1.5~0.5之间时,加上0.5转成int的值为0;在-2.5~-1.5之间时则为1,如此类推。
例如int test = -1.2 + 0.5; //结果test为0
此时我们可以加上一个较大的数将其转换成正数,最后再减去该数即可
通过下面介绍的index计算方法以及scrollview自带的设置位置方法
void setContentOffsetInDuration(CCPoint offset, float dt);
我们便可以轻松实现元素对齐功能。
一、scrollview界面设计
容器选用CCMenu,屏幕高度为640,每个item之间间距为320。
item的y坐标设置为itemHeight * (1-i);
屏幕中部的index为默认值
效果设计如图所示
index 为 0 的情况
index为1的情况
由此可得一个对应关系
所以有
float itemHeight = 320.0f; float value = scrollView->getContentOffset().y / itemHeight; int index = value + 0.5;
但是由于强制转换的算法限制,在正数范围内此方法成立,在值为负数时情况有所不同
当值在-1.5~0.5之间时,加上0.5转成int的值为0;在-2.5~-1.5之间时则为1,如此类推。
例如int test = -1.2 + 0.5; //结果test为0
此时我们可以加上一个较大的数将其转换成正数,最后再减去该数即可
float itemHeight = 320.0f; float value = scrollView->getContentOffset().y / itemHeight; value += 100; int index = value + 0.5; //此情况错误:int index = value + 0.5 - 100; index -= 100;
相关文章推荐
- [cocos2dx]计算scrollview元素的index
- 【lua-cocos2dx游戏开发】Lua查找表元素过程(元表、__index方法是如何工作的)
- 计算点、线、面等元素之间的交点、交线、封闭区域面积和闭合集(续7)
- z-index设置无效和元素重叠显示的问题解决
- 计算数组元素个数和计算字符串数组元素个数方法
- Openjudge计算概论-计算矩阵边缘元素之和
- 计算数组中重复元素的个数
- 关于同辈元素定位方式与z-index的总结
- 输入一个整数矩阵,计算位于矩阵边缘的元素之和
- jQuery-index()搜索匹配的元素,并返回相应元素的索引值
- 将字符串中数字元素转换成整数进行计算
- 浅谈元素重叠及z-index的问题
- 二维数组的输出以及当中元素的计算
- JavaScript计算页面元素位置相关知识
- Lua查找表元素过程(元表、__index方法是如何工作的)
- 计算并设置ListView的高度,防止嵌套ScrollView监听出现问题,(两种方法,一种自定义,一种测量)
- 设M 是一个m×n 的矩阵,其中每行的元素从左到右单增有序,每列的元素从上到下单增有序。 给出一个分治算法计算出给定元素x 在M 中的位置或者表明x 不在M 中。分析算法的时间复杂性。
- cocos2dx ScrollView 测试三 指示器
- 不能用 字体大小(font-size) + padding 计算元素的高度
- Lua查找表元素过程(元表、__index方法是如何工作的)