教程

10

阅读时间

如何使用条件语句设计圆形滑块

了解如何使用 ProtoPie 的条件语句和变量创建一个环形滑块。

卡尔·布拉金, 科罗拉多大学博尔德分校用户体验设计专业学生

滑块让用户可以通过移动一个控件(如旋钮)在范围内轻松调整数值。当你不需要精确数字、只需大致选择时,它非常适合。

在本教程中,你将学习如何创建一个圆形滑块,用户可以控制旋钮来调整百分比显示。ProtoPie 通过 Chain 触发器和变量元素简化了这一过程。Chain 触发器可以将旋钮的旋转与滑块的活动区域关联起来,而变量可帮助计算旋转角度,从而更新显示的百分比值。

让我们开始动手搭建吧!

概览

  • 步骤 1:让旋钮可拖动

  • 步骤 2:使用蒙版和 Chain 触发器显示滑块的活动部分

  • 步骤 3:让文本数值与旋钮旋转对应

最后,你将能够做出像这样的效果👇


circular slider

[起始 Pie 文件] [完成版 Pie 文件]

步骤 1:让旋钮可拖动

  1. 首先,创建一个与径向表盘大小匹配的容器。然后,将 Knob 对象拖入该容器,并将其重命名为“Knob Container”。


knob container
  1. 将 Knob Container 的原点更改为中心


origin
  1. 选中 Knob 对象后,添加一个 Drag 触发器。选择 Knob Container 并添加一个 Rotate 响应。现在你可以在 Preview 窗口中让旋钮围绕径向表盘完美旋转。


drag trigger

💡 注意:还有另一种方式可以让圆形滑块中的 Knob 对象可拖动,但效率不如本课使用的方法。

另一种方法是将 Knob 的原点改到组件中心并使用 Rotate 响应。不过在 ProtoPie 中,原点数值以百分比设置,这会使精确定位变得困难。通常需要反复试错才能让 Knob 对象完美绕表盘旋转,因此我们推荐本教程中介绍的方法。

步骤 2:使用蒙版和 Chain 触发器显示滑块的活动部分

在接下来的步骤中,你将使用蒙版,开始设置随着旋钮移动而显示滑块活动部分的效果。

第 1 部分:设置蒙版

  1. 首先,创建两个将圆形垂直分割的半边形状,并分别放置在左半边和右半边。你可以参考左右图像的尺寸来获得正确测量值(128x256)。之所以创建两个半边,是因为它们的分割线会平分旋钮,随着旋钮旋转,这两个半边也会旋转,从而显示活动部分。


two masks
  1. 你需要将右半边图像放在左侧的一个蒙版内。将左侧半边形状拖到右侧图像下方,选中该半边形状后,选择“Use as Mask”。移除该形状图层的填充。注意,你元素上方的所有图层也会被蒙版影响。你需要改为选中右侧图像和左侧蒙版,并将它们放入各自的容器中。


use as mask
  1. 将左侧图像与右侧形状图层放入一个容器中,并创建蒙版。


left and right masks

第 2 部分:设置 Chain 触发器

在接下来的步骤中,你将把蒙版的旋转与旋钮容器的旋转进行链式关联,以创建活动区域显示效果。

  1. 选择Left Mask并将原点设置为左中(或圆形滑块的正中间)。对 **Right Mask **重复此操作,使其原点也位于圆形滑块正中间。


mask origins
  1. 给 Knob Container 的 Rotation 添加一个 Chain 触发器。


chain trigger
  1. 在旋转显示效果中,会先从右半边开始,因为随着旋钮移动它会先显示。选择Left Mask,并在 Chain 触发器中添加 Rotate 响应。输入数值,使其范围都从 0 到 180。


reveal left mask
  1. 选择Right Mask,并将 Rotate 响应关联到 Chain 触发器。旋转范围为 180 到 360,角度范围为 0 到 180。


reveal right mask

让我们在 Preview 窗口中看一下效果。


slider

步骤 3:让文本数值与旋钮旋转对应

  1. 创建一个变量并命名为value。选中该变量后,将Assign添加到Chain。把变量改为value变量,它会根据容器的值进行赋值。将Rotation范围从0360,并将Value0100


variable
  1. 你可以点击调试器图标查看值是否变化。打开Preview window并尝试拖动——你应该能看到拖动时数值在变化。你会注意到该值包含两位小数。别担心;我们会在下一步处理这个问题。


preview
  1. 创建一个与value变量关联的Detect触发器。创建一个与文本Value关联的Text响应。将内容改为公式。你将使用公式 round(value)+"%"。这会移除小数点并四舍五入到最接近的整数。


formula

💡 round(): 返回一个数字的四舍五入值。

  • round(source:NUMBER) → NUMBER

恭喜!

很棒,你已完成本教程!希望你喜欢为精彩的 ProtoPie 项目创建圆形滑块。我们很想看到你的创意实验。创建你自己的原型,并在 XInstagram 上使用 #MadeWithProtoPie 分享。

[下载 ProtoPie] {加入社区}