之前看到大神RAEDME大鹏的中继器九宫格文章,当时对中继器的使用还不甚了解,折腾了好久也只做出了开头部分。。。了解更多中继器的使用后,终于做出九宫格拼图的原型,分享给小伙伴们,希望你们能够喜欢,同时学会中继器的部分使用方法~
详解中继器的九宫格,从两方面讲解,一是原理,二是实践。废话不多说,下面开始讲解咯,请跟上我的速度哦~
原理篇
先来看下线框图表示的九宫格,看下图。
1-8代表图片的拼块,0代表初始可移动的空格点,括号里代表的是每个点的x和y坐标。由图中可知,在0点四周的拼块是可以进行移动的,其他不可以移动。那如何辨别哪些点是0点的相邻四个点呢?一是用眼看,二是函数判断,采取第二种方法。你一定想问why→我们用眼睛看一目了然,axure是程序,没长眼睛看不到,要用逻辑判断,懂了吗?
假设当前空格点坐标(3,3),即图中的0点,相邻点则满足以下条件:
|x-3|+|y-3|=1
符合公式的点都是可点击移动滴
可点击移动点找到后,那就是该移动了,举栗子,移动上图中的8点,点击8,则8和0点位置互换,0点坐标变成(2,3),8点坐标变成(3,3),0点此时在九宫格里排序变成第8位。看下实际图片对比。
点击右侧完整大图,左侧拼块图分散显示且空白点在最后,拼块图的实现则由中继器完成。下面来看看中中继器的使用。
中继器6列内容:picture保存拼块图,x保存点的x坐标,y保存点的y坐标,move保存该点是否可移动(0代表否,1代表是),id代表点的索引值,sortid代表排序值。
index:获取点的索引值
abs():获取绝对值
random():随机获取0-1之间的数值
TargetItem:目标项,栗子”点击A移动B,则B为目标项“
添加排序:对某项按规则排序
更新行:对某条数据内容进行更新
原理篇结束,下面开始实践篇。
如果有没看懂的,请看大神原理篇,传送门:玩转中继器 | 九宫格拼图的实现原理
实践篇
一张大图,8个小图(直接从大神的预览链接里copy下来的,捂脸.jpg),大图设置320*320,命名为”原图“。拖出中继器命名“九宫格”,点击选择样式的布局为水平排列,每行3个,行间距和列间距均为10,双击进入中继器详细页,拖出图片命名“拼图”,设置图片100*100。
给中继器”九宫格“添加6列内容:picture,x,y,move,id,sortid。
picture列选中点击单元格邮件,选择导入图片,将8块拼图导入进去,增加一行空白行;x和y空白,move列填充0,id空白,sortid列前8行空白,第九行填充1。
实现拼块小图自动加载,”每项加载时“添加用例,设置”拼图“=Item.picture。
在浏览器里预览下,看看是不是图片自动加载出来啦~
图片加载出来后,实现它随机排序,则用到中继器的添加排序功能。在”页面载入时“添加用例,给sortid列的不等于1的添加随机数值,然后给该列按照升序进行排列,random()的数值永远小于1,所以排序后,空白点永远在最后。
接下来给每个点添加id,x和y坐标,顺便添加隐藏”原图“。给”原图“在鼠标点击时添加用例,更新数据行,给每一个点添加id,x和y坐标,最后再添加隐藏”原图“。
排序后的拼块图,初始可移动的点为6和8,设置6和8点的move=1。
静态部分工作已经完成,接下来就是期盼已久的动态了,点击拼图可以移动,是不是有点小激动呢?
进入中继器详情页,给图片”拼图“添加点击用例。
增加点击条件,当前点为可移动点(即move==1的点)才能点击,将该点与空白点(即id==0的点)内容(picture,id,move)调换,将变位置后的空白点的相邻可移动点的move设为1,非相邻点的move值设为0。
实践篇完成,浏览器里走一遭,欣赏下自己的九宫格拼图吧~~~~
原型预览:http://73vyup.axshare.com