【Axure教程之高级交互原型7】拖动Icon合并组成文件夹

Recommanded by editor
上海/产品设计师/5年前/2099浏览
【Axure教程之高级交互原型7】拖动Icon合并组成文件夹Recommanded by editor
Kebot

本次教程是应一位站酷朋友私信请求,希望能做一期关于“拖动icon合并组成文件夹”的axure交互教程

【摘要·简介】

好久不见啦!本次教程是应一位站酷朋友私信请求,希望能做一期关于“拖动icon组成文件夹”的axure交互教程,一直太忙没有时间做,最近终于有时间腾出来研究了一下,于是就有了这么一期新教程。

关键技术点:

1、进一步掌握灵活使用全局变量和循环模式;

2、学习area of widget条件的使用


我们先来看一下完成后的效果:


高清版预览可以在附件或者网盘分享文件里看视频~

完成后的工程文件和初始工程文件网盘链接:

https://pan.baidu.com/s/1QiX8he9qlNSSzMrKJTJ37Q 提取码:Q5u0 


接下来正式开始~





——————————————————分割线———————————————

【Step1】搭建场景,建立拖拽icon的第一步交互操作:长按icon放大进入移动模式

1打开附件压缩包中的“教程初始状态的Axure工程文件.rp”工程文件;

可以看到所需UI元素已经都摆放好了;

图1:

2首先我们观察各种移动设备桌面系统的“拖动icon”这一交互,基本都有一个共性:那就是都通过长按之后激活icon移动模式,icon自身则会切换为另一种形态,可能是变,也可能是更改了透明度。

我们先完成这个交互。


3选中icon1 的动态面板组件“Icon1”,在右侧栏里点击“More Events”,如下图2所示:

图2:


4在弹出的菜单中选中“OnLongClick”,这是一个长按事件,如图3所示:

图3:


5此时会弹出Case editor窗口,在窗口的左侧栏里选中“Set Size”动作,设置参数如下图4所示:

图4:

图中参数的含义是:当长按时,icon1动态面板部件内的image图片素材,以center中心为缩放轴心,在时长200毫秒内放大到210x210的大小


然后点击OK,试着运行一下效果,应该可以看到当长按时,icon放大;







——————————————————分割线———————————————

【Step2】建立拖拽icon的第二步交互操作:移动,以及建立一个全局变量用来监测是否处于长按移动模式,从而确定是否能被拖动

1此时我们需要建立一个全局变量,来监测当前的icon是否处于长按移动模式。因为我们不能在任意时候就能拖动icon,只有长按后处于移动模式的时候才能拖动。

若变量值为初始值0,则处于静态模式,拖动icon不会有反应;长按触发移动模式后,变量值变为1,当前处于移动模式,可以被拖动;


点击顶部菜单栏的“Project”,在弹出的下拉菜单选择“Global Variables”,如下图5所示:

图5:

2设置全局变量名为“LongClickOnOff”,初始值为0,如下图6所示:

图6:

3再次选中icon1 动态面板,双击OnLongClick的case,进入case编辑窗口,在左侧栏里选中“Set Variable Value”,设值为1,如下图7所示:

图7:

4接下来我们来建立拖动的交互。还是选中icon1动态面板,在右侧栏选中并双击OnDarg事件,进入case编辑窗口,如下图8所示:

图8:

5case编辑窗口中,在左侧栏点击选中“Move”动作,并设置move的方式为“with drag”,即跟随拖动而移动,也就是实现了icon1部件随着拖拽而移动,如下图9所示:

图9:


6最后,我们还需要添加一个条件,即必须在处于长按后的移动模式下,才能被拖拽,此时前面我们所建立的全局变量就派上用场了。点击case编辑窗口顶部的“Add Condition”,在弹出的condition编辑窗口中,设置条件参数如下图10所示:

图10:

即只有当全局变量LongClickOnOff值为1即被长按激活移动模式后,才能被拖动;


OK我们已经实现了“长按-拖动”这样一个交互,试着运行一下看看效果~







——————————————————分割线———————————————

【Step3】接下来需要建立一个循环,来实时监测跟踪被拖拽的icon处于什么状态下?是否和其他icon区域有重合?从而决定被拖拽icon的运动和状态。

1前面很多教程都讲到了使用动态面板的OnMove事件来建立循环,从来实现实时监测跟踪的机制。这里就不再赘述,详见前面的教程。我们只贴一下这个命名为“move触发器”的动态面板的OnMove事件的case设置,如下图11所示:

图11:

这里说一下,之所以加上Wait,是为了给循环设定一定的时间间隔,否则,循环速度过快会使得运行非常卡。。。


另外拖动icon的时候,在icon1动态面板的OnDrag事件的case中,最后还需要加一个Move动作,拖动的时候move一下“move触发器”动态面板,从而启动循环。如下图12所示:

图12:


只有实现了对被拖拽icon的实时监测跟踪,才能在拖拽中和松手时,决定下一步改icon该如何运动,是回到原位?还是到一个新的位置?还是和另一个icon区域有重合从而合并形成一个新文件夹?



2在拖拽中和松手时应该发生什么?

第一,如果停止拖拽的时候,被拖拽的icon1,没有和其他icon区域重合,则自动回到原位;

第二,如果被拖拽的icon1,松手的时候被拖动所至位置已经与其他icon重合,则合并称一个文件夹icon

我们先来定义第一个交互。

这里可以用到OnDragDrop事件(拖拽停止),以及case编辑中condition条件种类里的“area of widget”,这个condition条件的含义是“部件的区域”,被拖拽的icon是否与其他icon重合,就可以用到这个条件。

如下图13的参数设置所示:

图13:


3条件编辑窗口第二个下拉菜单中选择“icon1”,即icon1的area of widget/区域,第三个下拉菜单选择“is not over”,即“不覆盖”,第四个下拉菜单也是area of widget/区域,第五个下拉菜单是选择哪个部件是否被覆盖,选择icon2,如下图14所示:

图14:

我们知道,只是不覆盖icon2一个部件是不够的,我们总共有五个icon,所以需要再添加3个条件,满足条件设为“all”,即需同时满足四个条件。如下图15所示:

图15:

4满足以上定义的条件,则在OnDragDrop即松手之后,icon1自动回到原位,添加一个move动作和Set size动作,定义参数如下图16A和图16B所示

图16A:

图16B:







——————————————————分割线———————————————

【Step4】定义第二个交互,如果被拖的icon1与其他icon重合了,则应该组合成一个文件夹icon。

这里需要特别注意,被拖拽的icon与其他icon组成一个文件夹,不是在松手后发生的,而是在正在拖拽过程中发生的。这里,我们之前建立的那个实时监测的循环机制就要发挥作用了

1我们先想一下,在拖拽中,被拖拽的icon1是不适合用来做触发新case的,因为此时无法定义新的事件,OnDrag事件也无法用来随时触发新case,所以我们要用另一个部件来触发新case——就是那个能够做到实时监测状态的空白动态面板“move触发器”,因为它的OnMove事件是一直在持续不断触发的。

选中“move触发器”的OnMove事件,双击,弹出新的case编辑窗口,如下图17所示:

图17:

点击Add Condition,编辑条件如下,先以“与icon2重合并组成新文件夹icon为例”,如下图18所示:

图18:

2然后我们分解一下,两个icon组成一个文件夹,会有哪些转场动效?

一、出现一个新的文件夹背景icon(这里是一个新的圆角矩形);

二、过一会儿,新的文件夹背景icon变大;

三、两个icon同时移动到合适的位置;

最终效果如下图19所示:

图19:



3先来制作第一个子动效果——“出现一个新的文件夹背景icon(这里是一个新的圆角矩形)”

以icon2为中心,新建并在合适位置摆放一个圆角矩形,命名、位置、大小参数设置如下图20所示:

图20:


然后先设该部件为隐藏,右击弹出菜单中选择“Set Hiden”,如下图21所示:

图21:

再次选中“move触发器”部件,并双击刚新添加的case2,在弹出的case编辑窗口中,点击添加Show/Hide动作和Set Size动作,参数如下图22所示:

图22:


另外还同样需要添加wait和move动作用来启用循环,并且这两个动作排序要在Show/Hide和Set Size之上,如下图23所示:

图23:

还记得前面我们刚开始建立循环时候编辑的case1吗?此时这两个case会有冲突,在运行时候你会发现文件夹背景icon出现的动效并未生效,我们需要再更改一下case的条件。

选中case2往上拖动,更改排序到case1之前,并右击case1在弹出的菜单里点击选中“Toggle IF/ELSE IF”,将case1的条件更改为else if,如下图24所示:

图24:


然后我们再来运行一下试试看效果。可以看到效果已经生效了,但是我们会发现被拖拽的icon1被叠在文件夹背景icon后面,我们需要在case2再添加一个“Bring widget to Front/back”动作,并且还需要适当降低icon1的透明度(使用Set opacity动作),参数设置如下图25所示:

图25:

再运行一下试试看效果。


4我们接下来制作第二个和第三个动效,但注意:新的动作并不是添加在move触发器的case2上,因为这是一个循环动作,最后会造成动效循环不断,所以我们需要将它添加给另一个部件——文件夹BG。点击选中文件夹BG的Move Events,在弹出的菜单里选中OnShow事件,如下图26所示:

图26:

进入case编辑窗口



我们需要在保持当前状态一段时间后,才启动第二个动效,所以需要先添加一个wait动作,设置为1000毫秒,然后第二个动效+第三个动效是放大文件夹BG,同时和两个icon一起移动到合适位置。所以需要添加Set Size和Move动作,

添加一个Set Size动作和Move动作,在右侧选中“文件夹BG”,参数如下图27所示:

图27:

试着运行一下效果,我们发现了一个bug:在文件夹放大并移动后,又缩小回了之前的大小。这是什么原因?

其实是那个move触发器的循环机制造成的。因为此时被拖拽的icon1仍然还覆盖在icon2上,所以,还是会触发文件夹BG出现并设置size为250x250的动作。我们需要给move触发器的case2再添加一个限制条件,除了icon1覆盖了icon2之外。我们还是要用到全局变量。

回到选中move触发器并双击case2弹出case编辑窗口,点击edit condition,点击右侧的绿色“+”按钮,添加一个新的条件,第一个下拉菜单选择“value of variable”,如下图28所示:

图28:


第二个下拉菜单选择“Add New”,即新建全局变量,如下图29所示:

图29:


设置全局变量命名和初始值如下图30所示:

图30:

然后再设置新的条件参数如下图31所示:

图31:


那么如何利用这个条件来终止循环呢?就是在文件夹BG的OnShow事件触发之后,立即将这个新建的变量值修改为其他值,比如1,而且特别注意:必须把这个为变量赋值的动作排序在第一位,否则无法生效,文件夹BG仍然为变回刚显示时较小的样式。如下图32所示:

图32:

试着运行一下效果,可以看到文件夹显示和放大的动效已经生效啦!



5再来添加一些细节,比如文件夹放大展开以后的背景半透明蒙版。新建一个1080x1920尺寸的透明度60%的黑色矩形,并设为Hide暂不显示,命名为“BG 半透明蒙版”,如下图33所示:

图33:


然后我们要更改一下文件夹动效触发以后的部分icon的顺序,被拖拽的icon1、被覆盖一起合并称文件文件夹的icon2、文件夹BG这三个部件需要排序到新添加的半透明BG之上,我们仍然使用Bring to front/back动作。

选中move触发器的OnMove事件的case2,双击打开case编辑窗口,在之前已经定义的Bring icon1 to front动作之前,再添加一个Bring to front/back动作,在右侧分别勾选icon2部件和文件夹BG部件,如下图34所示:

图34:

接下来再为文件夹BG的OnShow事件的case,添加一个Show/显示半透明蒙版的动作,如下图35所示:

图35:

6icon1和icon2需要一起移动到放大后的文件夹BG内。还是选中文件夹BG,为其OnShow事件的case再添加move动作,如下图36所示:

图36:


在右侧栏选中icon1和icon2,分别设置move参数如下图37所示:

图37:

同时,icon1还要恢复到原始大小,再添记一个set size动作,注意这个动作需要在前面添加的move动作之前,参数如下图38所示:

图38:

7运行一下效果我们发现,在松手后,icon1回到了原始位置。所有,我们需要给move触发器的OnDargDrop事件添加一个条件,此时也可以利用前面的那个FileShow变量,除了前面添加的其他条件,还必须当FileShow值为0,也就是尚未触发文件夹生成时,松手,才回到原始位置

如下图39所示;

图39:







——————————————————分割线———————————————

【Step5】补完最后整个操作的最后一步交互:完成文件夹创建后,点击蒙版空白处,文件夹缩小回到普通icon大小,同时所有的icon重新排布位置。


1选中“BG 半透明蒙版”,双击OnClick事件,弹出case编辑窗口,如下图40所示:

图40:

2我们首先需要添加条件,因为只有当文件夹生成,也就是全局变量FileShow值为1的时候,点击动作才生效,条件设置如下图41所示:

图41:

3文件夹缩小为普通icon大小的动效,分解一下有以下几步:

  1. 半透明蒙版消失;

  2. 文件夹BG缩小到180x180的普通icon尺寸大小,并移动到合适位置;

  3. icon1和icon2跟随一起缩小并移动至合适位置;

  4. 所有icon重新排序;

我们一步步分解来做。


首先是最简单的半透明蒙版消失,添加Show/Hide动作,设置如下图42所示:

图42:


4再添加一个Set Size动作和move动作,在右侧选中文件夹BG、icon1、icon2,分别设置参数如下图43A、图43B、图43C所示:

图43A:



图43B:


图43C:


另外我们要补充一个属性编辑,需要将icon1和icon2两个动态面板的右侧properties/属性栏中,勾选“Fit to Content”,如下图44所示:

图44:


这样的话, 动态面板的显示范围,会随着动态面板里面的内容区域大小一起变化,有时候这是一个很有用的属性。


试着运行一下效果,我们发现文件夹BG的圆角太大了,目前我使用Axure8最新版本还无法支持设置更改圆角,所以我们只能暂时先凑合一下啦~还有一个办法, 就是不要用axure中的矢量矩形部件来创建文件夹BG,而改用图片素材,这样可以做到圆角随着size缩放而变化,效果会更好一些。


另外还有个问题是icon1和icon2的文字text部件也无法跟随缩放,所以可以在文件夹icon缩小的同时,暂时隐藏,添加show/hide动作并设置参数如下图45所示:

图45:

5最后一步是其他icon的重新排布。在添加一个move动作,在右侧栏选中“icon3”、“icon4”

、“icon 文件夹”,参数分别设置如下图46所示:

图46:


此时,整个拖拽icon合并成文件夹的交互动效已经基本完成了。



基本原理如此,大家还可以再探索一下是否有更简单的方式,或者更加好的效果,自己再添加一些更丰富的细节~






19
Report
|
45
Share
相关推荐
评论
in to comment
Add emoji
喜欢TA的作品吗?喜欢就快来夸夸TA吧!
推荐素材
You may like
王的朋友 & KING FRIENDS
Homepage recommendation
x oasis coffee
Homepage recommendation
相关收藏夹
UI
UI
UI
UI
作品收藏夹
UI
1533
Axure教程
Axure教程
Axure教程
Axure教程
作品收藏夹
教学&视频
教学&视频
教学&视频
教学&视频
作品收藏夹
干货
干货
干货
干货
作品收藏夹
旗袍
旗袍
旗袍
旗袍
作品收藏夹
大家都在看
Log in