网站首页 > 编程文章 正文
本篇文章通过原型设计工具为大家演示了9宫格拼图效果,看完后别忘了自己动手做一下!
效果图
使用工具
Axure RP 9 beta 绘制原型
Camtasia 2018 录屏及导出gif
Adobe Photoshop CC 2017 处理图片
实现逻辑
函数使用:
- [[Math.abs( )]]:取绝对值
- &&:代表“且”,a&& b 表示a与b均返回true才返回true
- || :代表“或”,a||b 表示a或b任一一个返回true就返回true,否则返回false
- [[this.x]]:元件当前横坐标位置
- [[this.y]]:元件当前纵坐标位置
逻辑描述
以上是本案例使用的函数,接下来介绍实现小图块移动的逻辑:(下边内容繁杂,不愿意阅读的同行可以直接下载原型研究哈)我们知道,拼图游戏在操作的过程中,是空白位置相邻的图片移动到空白位置,我们设置每个小图块长宽均为100,那么不难发现,可以移动到空白位置的图片坐标距离空白图片坐标距离为100,那么我们在设置移动条件的时候,就以图片距离为依据。
假定某张图片的坐标为(100,200),空白图片的坐标为(0,200),(X1-X2)^2+(Y1-Y2)^2=两图片距离^2,按照这样的公式可以判断图片与空白图片的距离是否为100,考虑到这样的公式很难在Axure内表达,因此我们简化公式:
X1-X2=±100且Y1-Y2=0时→图块可移动
X1-X2=0且Y1-Y2=±100时→图块可移动
否则,图块无法移动,此时当鼠标单击元件时,判断是否符合移动条件,移动条件转化为Axure语言就是:
[[Math.abs(This.y/100-ly)==0 && Math.abs(lx-This.x/100)==1 || Math.abs(This.y/100-ly)==1 &&Math.abs(lx-This.x/100)==0]]
其中,lx和ly是我们设置的局部变量,具体含义下文继续描述。
图片移动的逻辑基本成型,接下来说说如何记录空白图片的位置:我们画出四个框,命名为X,Y,X*100,Y*100,分别代表当前空白位置的位置及坐标,坐标我们用距离表示,位置我们用0、1、2表示,如下图所示,图片的坐标和位置可以一一对应:
上图中写出了四个方块的位置和坐标,其他的以此类推。下面也就是最后的记录方式了,记录方式在这里不啰嗦,大家自行下载原型相信很容易便可以理解。
另外,如何打乱图片本次先不做教程,下期再行补充。
实现步骤
- 新建动态面板,用于放置九宫格图片。
- 接下来……算了,啰里啰嗦的描述,自己看着都累了,直接上截图
选择第一张图片
鼠标单击时,IF
设置文本:
其中,lx为元件X的元件文字,ly为元件Y的元件文字。设置文本,
移动:
其中,lx为元件X*100的元件文字,ly为元件Y*100的元件文字。为八个图块设置同样的交互即可,X、Y、X*100、Y*100的初始值就是初始空白图块的值,应此(X,Y)=(2,2),(X*100,Y*100)=(200,200)
OVER,拼图已经做完。
总结
拼图游戏看似已经做完了,其实呢,美中不足,差一步:当我们拼完图后,想打乱重新来一次,有木有,无法打乱,那么怎么办呢,本期先留下一点小悬念,我们下期再出如何打乱图片的RP。
原型文件下载链接:https://pan.baidu.com/s/14L_Vi-Azvg8k5eV2jMQBHw
提取码:v7c7
Good Bye!!!
本文由 @PM Silence 原创发布于人人都是产品经理。未经许可,禁止转载
题图来自Unsplash,基于CC0协议
猜你喜欢
- 2024-10-22 Axure 9 案例教程,如何利用情形实现B站图文登录验证?
- 2024-10-22 Axure:使用动态面板实现拖动的方法
- 2024-10-22 Axure 9 教程:如何制作验证码倒计时,并重新获取交互效果?
- 2024-10-22 Axure 9.0教程:二级菜单的制作与使用
- 2024-10-22 产品新人如何用做产品的方法制作Axure元件库
- 2024-10-22 Axure9原型设计:动态面板实现APP隐藏菜单
- 2024-10-22 Axure PR 9 按钮(Button)设计&交互
- 2024-10-22 Axure9 轮播图制作(axure9轮播图状态圆点)
- 2024-10-22 Axure9 教程:可模糊搜索的多选效果
- 2024-10-22 Axure高保真教程:滑动输入元件(axure rp8怎么做滑动)
你 发表评论:
欢迎- 05-09Spring Boot3 RESTful 接口参数校验,这篇吃透就够了!
- 05-09《Spring6》第02节:基于XML方式搭建Spring6框架开发环境
- 05-09MapStruct架构设计(mapstruct @mapping)
- 05-09分布式微服务架构组件(分布式微服务架构设计)
- 05-09Java Swing组件下的JButton实例(java swing 组件)
- 05-09java基础都在这了,小主们拿去吧(java基础是指什么)
- 05-09AOP的实现落地(拦截过滤),一切都要从Servlet说起
- 05-09【Spring Boot】WebSocket 的 6 种集成方式
- 最近发表
-
- Spring Boot3 RESTful 接口参数校验,这篇吃透就够了!
- 《Spring6》第02节:基于XML方式搭建Spring6框架开发环境
- MapStruct架构设计(mapstruct @mapping)
- 分布式微服务架构组件(分布式微服务架构设计)
- Java Swing组件下的JButton实例(java swing 组件)
- java基础都在这了,小主们拿去吧(java基础是指什么)
- AOP的实现落地(拦截过滤),一切都要从Servlet说起
- 【Spring Boot】WebSocket 的 6 种集成方式
- Java 中五种最常见加密算法:原理、应用与代码实现
- 用注解进行参数校验,spring validation介绍、使用、实现原理分析
- 标签列表
-
- spire.doc (59)
- system.data.oracleclient (61)
- 按键小精灵源码提取 (66)
- pyqt5designer教程 (65)
- 联想刷bios工具 (66)
- c#源码 (64)
- graphics.h头文件 (62)
- mysqldump下载 (66)
- sqljdbc4.jar下载 (56)
- libmp3lame (60)
- maven3.3.9 (63)
- 二调符号库 (57)
- 苹果ios字体下载 (56)
- git.exe下载 (68)
- diskgenius_winpe (72)
- pythoncrc16 (57)
- solidworks宏文件下载 (59)
- qt帮助文档中文版 (73)
- satacontroller (66)
- hgcad (64)
- bootimg.exe (69)
- android-gif-drawable (62)
- axure9元件库免费下载 (57)
- libmysqlclient.so.18 (58)
- springbootdemo (64)
本文暂时没有评论,来添加一个吧(●'◡'●)