Axure实战24:创建一个掘金Lottery幸运抽奖工具

在本章中,你将学会使用中继器和交互动作创建一个掘金Lottery幸运抽奖工具。

项目背景

在之前多次参加掘金日新计划的创作活动中,几乎没有一次抽中幸运奖,一方面可能由于参加人数太多,另一方面也有可能是本身运气就不太好。

既然官方网站抽不到自己,那么为了安慰自己幼小的心灵,我们自己搭建一个掘金的幸运抽奖工具。

1.png

项目搭建

首先,创建一个新项目,命名为Lottery。

2.png

页面样式-基础样式

首先,我们设置网站页面的背景填充色,设置为#F0F2F5。

拖入一个“矩形1”组件,设置矩形位置为(40,40),设置尺寸为400*400,设置线宽为0,设置圆角半径为8。

然后,我们复制第一个矩形,位置放置于第一个矩形右边20的位置,横向居中对齐。

3.png

拖入一个“文本标签”组件,修改文字为“抽奖名单”。

设置位置为矩形内左侧、上侧均为20的位置,设置字号为14号。同理,复制出一个,修改文字为“中奖名单”,放在第二个矩形相同于第一个矩形的位置。

4.png

拖入一个“文本标签”组件,命名为“待抽奖人数”。

修改文字示例为“待抽奖:9人”,设置位置为与“抽奖名单”文字横向对齐且间距10,设置字号为12号字。同理,复制一个出来,设置为“已中奖人数”,示例文字为“已中奖:3人”。

5.png

拖入一个“矩形2”组件,作为展示名单突出的背景颜色。

设置尺寸为360*280,位置位于矩形中间,上下间距60、左右间距20的位置,设置圆角半径为8。同理,复制到一个放在第一个白色矩形的位置。

6.png

拖入一个“主要按钮”组件,命名为“开始抽奖”。

修改内部文字为“开始抽奖”,设置位置为在矩形居中且下间距为10的位置,设置尺寸为140*40,设置字号为14号字,设置填充颜色为#1890FF,设置圆角半径为4。

同理,拖入一个“按钮”组件,命名为“重置按钮”,修改内部文字为“重置”,位置大小、字号、圆角和开始抽奖按钮保持一致,设置线段颜色为#D4D4D4。

7.png

至此,页面的基础样式已经搭建完毕。

页面样式-中继器

下面,我们来完成2个名单列表的制作。

拖入一个“中继器”组件,命名为“input”,点击进入内页,内部的示例的矩形命名为“inPutName”。

在“样式”工具栏中,设置数据项两个表头标题分别为“inputNumber、inputID”,这里inputNumber是用来做排序和后面做抽奖筛选的,inputID则是中继器展示抽奖名单列表的。

我们填写一些示例的数据。

8.png

同理,我们再拖入一个“中继器”组件,命名为“output”。

也设置样式和数据项的名称,这里是和上面重复的动作,建议直接复制第一个中继器来修改,这里就不再赘述操作步骤了。

9.png

至此,页面样式部分我们就已经完成了。

下一步,我们来实现逻辑交互动作。

逻辑梳理-抽奖逻辑

我们先来分析下抽奖的逻辑,抽奖名单中中奖的ID,会从input的中继器中移动到output中继器中。

由于中继器之间是没有交互操作的,我们需要使用中间变量来进行过渡。

也就是左侧抽奖名单选中的ID,选中的时候,我们加到全局变量进行存储,同时在第二个中继器获取全局变量的值,最后第一个中继器中删除选中的数据,就完成了抽中的ID从抽奖名单中删除,中奖的ID加到中奖名单中。

交互动作-全局变量

我们添加了3个全局变量,一个是selectedNumber,用来储存中奖的ID对应的序号。第二个是selectedID,用来存储中奖的ID。

另外,我们还定义了一个random的全局变量,在后面我们用来存储作为随机数的变量。

10.png

交互动作- ID移动

在有了全局变量加持下,我们来实现下ID从抽奖名单移动到中奖名单。

我们点击input中继器进入内页,选中inputName的矩形,在“交互”工具栏中设置交互动作,选择“单击时”,选择“设置变量值”,目标为全局变量selectedID,设置值为“[[item.inputID]]”,同时也设置全局变量selectedNumber值为“[[item.inputNumber]]”。

这样,我们就完成了给全局变量赋值的交互,抽奖名单的ID就传递到了全局变量中。

11.png

交互动作-增加/删除行

参数传递上去后,我们还需要将传递的参数从抽奖名单中删除,然后添加到中奖名单中。

在“单击时”下添加交互动作,选择“添加行”,选择目标为“output”中继器,点击“添加行”,设置“outputNumber”的值为全局变量“[[selectedNumber]]”,设置“outputID”的值为全局变量“[[selectedID]]”。

中奖名单增加了数据,同时我们也要在抽奖名单删除对应的数据,添加交互动作,选择“删除行”,目标为“input”中继器,选择“当前”。

12.png

这样,我们就完成了点击抽奖名单,将抽奖名单加到中奖名单中的交互动作。

交互动作-排序

由于我们抽奖名单的ID删掉了,我们还需要重新对ID的序号进行重新排序。

在“单击时”下增加交互动作,选择“添加排序”,目标为“input”中继器,选择列为“inputNumber”,选择排序类型为“Number”,选择排序方式为“升序”。

13.png

交互动作-更新列表数量

上面,我们实现了抽奖列表和中奖列表的ID传递,那么每次交互时,抽奖名单的人数和中奖名单的人数都会发生变化。

这时,我们还需要动态更新名单中的人数。

14.png

添加“设置文本”的交互动作,目标为“待抽奖人数”文本,设置文本为“(待抽奖:[[LVAR1.itemCount]]人)”,其中LVAR1为局部变量,值为元件类型,对应的元件为“input”。

同理,我们也要更新output中奖名单的文本,操作和上述一致,只是元件要变成output。

15.png

我们返回到最外面,对于“待抽奖人数、已中奖人数”,由于不知道初始化的时候会加入多少名单,这里也需要设置交互动作。

我们设置“载入时”的交互动作,设置文本获取中继器列表的数量,和上面的方法一致。

16.png

交互动作-开始抽奖

接下来,我们来完成下抽奖的动作。

在前面,我们实际上是做了很多铺垫性的交互,Axure的交互逻辑和计算机实现的逻辑是一致的,每一步都需要详细的规划。

所以,不要急,慢慢来。

我们继续。

首先,我们是随机抽奖,那么第一步需要获得抽奖名单的中奖随机数。

17.png

选中“开始抽奖”按钮,在交互工具栏中选择“单击时”,选择“设置变量值”目标为全局变量random,设置值为“[[Math.ceil(LVAR1.itemCount*Math.random())]]”。

这是获得随机数的方法,我们通过局部变量定位到input中继器,获得到中继器列表的数量,然后在1~中继器列表数量之间随机取一个数。

交互动作-列表筛选

获得随机中奖的序号后,我们要判断这个需要时input抽奖列表中的哪一个,我们可以筛选出来。

18.png

添加交互动作,选择“添加筛选”,目标为input中继器,筛选的规则为中继器的inputNumber序号要等于全局变量random随机数。

这样,我们input中继器就会展示随机中奖的ID。

接下来,我们要把中奖的ID从抽奖名单移动到中奖名单。很简单,我们在之前就完成了这个逻辑,我们只需要触发这个逻辑。

19.png

我们可以联动这个操作,增加交互动作,选择“触发事件”,目标为中继器中的矩形inputName,设置事件为“单击时”。

这样,我们就联动了ID移动的交互了。

筛选完成,并把抽奖名单中中奖的ID移动到中奖名单后,我们设置等待500ms后移除筛选,然后input中继器重新展示那些没有中奖的名单。

20.png

最后,我们还需要更新标题旁边的“待抽奖”和“已中奖”的数量,这和之前做的一样,这里也不再赘述了。

21.png

交互动作-重置

抽奖完成后,我们如果还需要下一次重新抽奖,我们可以给“重置”按钮添加交互动作。

在交互工具栏中,添加“单击时”的交互,选择“打开链接”,选择”重新载入当前页面"。

由于Axure没有数据储存的数据库,这样的交互就相当于重新刷新浏览器的效果。

22.png

项目预览

完成后,我们在浏览器中预览下效果。

1.png

哈哈哈,效果不错!

为了让这个项目能够公开访问,我们可以生成html文件,然后发布到gitHub或者gitee中,这样就可以将网站分享给朋友们了。

项目地址

Lottery幸运抽奖: ricardowesley.gitee.io/lottery

快来动手试试吧!

如果本专栏对你有帮助,不妨点赞、评论、关注~

猜你喜欢

转载自juejin.im/post/7103320489740730375