简介
星级评分通常用于收集用户与应用内容互动方式的相关反馈。它可作为应用的可视化评价。不过,实现星级评分功能可能会相当繁琐。实现方法有很多,但有些方法在手动操作时会非常累人。借助 ProtoPie,你可以在几分钟内轻松构建星级评分功能。本教程将介绍如何使用组件、变量以及 send & receive 来实现这一效果。
你将学到什么
为每个组件实例赋予一个特殊数字,以设置其唯一标识
点击时使用该唯一标识点亮当前及之前的星星
最后,你将能够做出这样的效果!

分步说明
为每个组件实例赋予一个特殊数字,以设置其唯一标识
1. 打开“Star”组件。
创建好一个星星组件后,在你的工作场景中创建它的 5 个实例。完成后,打开主 Star 组件。
💡为什么要使用组件?
当对象具有相似行为时,我们会使用组件。在这个例子中,5 颗星星都具有相似行为。使用组件还可以避免一遍又一遍地为交互对象添加触发器/响应这种重复且繁琐的工作。
2. 为“Star”组件添加一个“number”变量。
下一步是给 Star 组件添加一个 number 变量。我们会确保勾选该变量的 Make Overridable 选项。这样做是为了给每个 Star 子实例设置唯一标识。

💡 什么是 make overridable?
Make overridable 表示组件的每个实例都可以在该变量上拥有不同的初始值。在这个例子中,我们用它为每个子组件设置唯一标识。
勾选 Make Overridable 选项后,回到主工作场景,按顺序将各个 Star 子实例的数字从(1 到 5)分别设置好。这样就为每个 Star 子实例设置了唯一标识。

点击时使用唯一标识点亮当前及之前的星星
1. 向“Star”组件添加 Tap 触发器和 Send 响应。
a. 现在回到主 Star 组件。我们希望在点击星星后触发特定响应,所以需要添加一个 Tap 触发器。在 Tap trigger 下添加一个 Send response。

b. 将响应中的消息设置为“tapped”。这表示该星星实例被点击了。勾选 Send Value Together 选项,并将值设置为“number”变量。这样会保存被点击的 Star 子实例的 number。

💡 消息会发送到哪里?
消息会发送到主场景中的所有“Star”实例,包括被点击的“Star”实例本身。
2. 向 Star 组件添加 Receive 触发器,并再创建一个名为“tapped_number”的变量。
a. 设置好 Send 响应后,我们希望接收来自被点击 Star 实例的一些响应。所以先创建一个变量,并命名为“tapped_number”。

b. 添加一个 Receive 触发器,将消息设置为“tapped”,并勾选 Assign to Variable 选项。选择将其赋值给变量 tapped_number。这样会返回主场景中被点击的 Star 实例的 number 值。

3. 点击时点亮当前及之前的星星。
a. 在 Receive 触发器下添加一个条件。将条件设置为 number ≤ tapped_number。在该条件下为 Vector 图层添加一个 Color 响应。将颜色响应的 Fill 设置为 #FDC97D(颜色可根据你的原型而变化)。这将确保被点击“Star”实例之前的“Star”实例会改变颜色。

b. 在 Receive 触发器下再添加一个条件。将条件设置为 number > tapped_number。在 Vector 图层上添加一个 Reset 响应。这将确保被点击“Star”实例之后的“Star”实例不会改变颜色。

💡 它是如何工作的?
当点击某个 Star 实例时,该 Star 实例会发送消息来更新其他 Star 实例,决定它们是否应被点亮。
恭喜!
你已顺利完成这些步骤,做得很好。这其实很简单直接,对吧?用 ProtoPie 制作星级评分就像小菜一碟。亲自试试看吧。




