最新文章
Cocos2d-x游戏开发实例详解7:对象释放时机
03-25 13:59
Cocos2d-x游戏开发实例详解6:自动释放池
03-25 13:55
Cocos2d-x游戏开发实例详解5:神奇的自动释放
03-25 13:49
Cocos2d-x游戏开发实例详解4:游戏主循环
03-25 13:44
Cocos2d-x游戏开发实例详解3:无限滚动地图
03-25 13:37
Cocos2d-x游戏开发实例详解2:开始菜单续
03-25 13:32
NGUI scroll view 刷新
概览
在NGUI中,一个被裁剪的UIPanel通常是不完整的,除非它能像滚动视图那样实现拖动功能。下面将详细介绍如何将一个Panel转化为滚动视图,以及滚动视图的相关设置和限制。
将Panel转化为滚动视图
将Panel转化为滚动视图只需简单的三步:
- 添加滚动视图组件:选择你想要添加滚动视图的Panel,在场景视图中右键打开菜单,选择“Attach -> Scroll View”。同时,检查Panel的“Clipping”属性,确保其值为“Soft Clip”。
- 调整滚动视图矩形:此时你已经拥有了一个滚动视图,通过拖动紫色的手柄来调整它的矩形范围,操作方式类似于选择挂件的矩形。
- 添加拖动脚本:最后一步是为至少一个碰撞器添加UIDragScrollView脚本。具体操作是选择碰撞器,在场景视图中右键,选择“Attach -> Drag Scroll View”。
需要注意的是,如果你有多个碰撞器,那么每个碰撞器都需要添加“Drag Scroll View”脚本,这样它们才能用于拖动面板。例如,对于一个横向的滚动列表,你需要为列表中的所有对象都添加“Drag Scroll View”脚本。另外,右键菜单内容是上下文关联的,所以如果你右击一个没有碰撞器的挂件,将不会看到“Drag Scroll View”选项。
滚动视图的选项设置
Scroll View有一些选项可以进行调整,下面详细介绍这些选项的功能:
- Movement:该选项用于选择滚动面板的滚动方向,你可以选择水平滚动、垂直滚动,也可以选择“Unrestricted”实现随意拖动。如果你想自定义移动,还可以使用“Custom”设置x和y值。
- Drag Effect:控制当你拖动滚动视图时的表现效果。“MomentumAndSpring”是类似iOS默认的行为。
- ScrollWheelFactor:如果你想让滚动面板可以通过鼠标滑轮滚动,可设置该值。若要让鼠标滑轮反向滚动面板,可设置为负数。
- Momentum Amount:控制开始拖动滚动视图的灵敏度。你可以根据需要调整这个值,使其更灵敏或更不灵敏。
- Reset Position:控制当视图被程序重置时的位置。(0, 0)表示左上角,如果你想要中间位置,可以指定(0.5, 0.5)。
- Restrict Within Panel:在大多数情况下,你会使用该选项,它可以将滚动内容限制在面板范围内。
- Cancel Drag If Fits:该选项可以防止内容被拖出区域。如果关闭此选项,内容可以被拖动到边界外,但会有一定的阻力。
- Smooth Drag Start和IOS Drag Emulation:这两个选项通常保留默认值即可。
此外,如果你有水平或垂直滚动条,还可以在对应的域中指定它们。指定后,你还能选择滚动条的显示条件。
限制
在NGUI 3.5.5或更早版本中,Scroll View只是裁剪它里面的挂件。如果内嵌了其他Scroll View,不会发生裁剪,只有一个裁剪会生效。不过,NGUI 3.5.6去除了这个限制。
实用技巧
技巧1
建议将滚动条的“Show Condition”设置为“OnlyIfNeed”,这样滚动条只会在必要的时候显示。
技巧2
如果你想要创建一个无尽的Scroll View,可以附加一个UIWrapContent,具体实现可参考相关文档。