一键在自己的网站上添加一只会动的小宠物

原创JYeontu前端也能这么有趣2024-01-0300:00发表于广东

组件实现效果如下图:

图片包我们可以通过以下几种方式来获取:

会作图的同学可以自己画一套专属的图片包。

我们从动图或视频中截取关键帧,并将获取到的关键帧背景扣除,这样我们也可以得到一套自己喜欢的图片包。

其实网上也有很多的桌宠图片包资源,所以我们可以直接到网上搜索。

由于本人美术不行且想偷懒,所以果断地选择了第3种方式来获取到了可以使用的图片资源。

获取到一套图片包之后,一套图片包中可能包含多个动作行为,所以我们还需要对其进行分类,将不同行为的图片分类出来,为了方便我们后续代码的编写,我们可以先将图片根据动作的顺序进行编号命名。

如上图划分的4中行为动作,我们都按顺序对图片进行编号命名,那么我们后续引用的时候就可以根据序号来定义一个行为动作,如下图:

图片准备好并且处理好之后,我们便可以开始编写代码了。

我们需要完成一个配置表来将图片和行为关联起来,如下图:

我们需要对每个图包的每个动作进行一个简单的配置:

图片包的路径。

没有进行任何行为的时候的默认展示图片。

行为集合,每个集合的配置如下:

name:该行为的名称,后面会在行为菜单展示;

min:行为开始图片编号;

max:行为结束图片编号;

isMove:该行为是否要发生位移;

audio:触发该行为时的音频。

具体如下:

{"name":"run","min":1,"max":2,"isMove":true,"audio":"Pikachu.mp3"},2、组件参数配置name选择展示的图片包,目前已有图片包:皮卡丘,奇犽,白一护,橘一护,喵老师,蓝染,迪达拉,日向雏田。

触发可移动行为时每一次移动的距离,默认为20px。

桌宠的尺寸大小,默认为50px。

初始化时默认触发的行为,可从行为菜单中选择。

props:{name:{type:String,default:"皮卡丘",},step:{type:Number,default:20,},petSize:{type:String,default:"50px",},defaultAction:{type:String,default:"",},},3、配置数据初始化我们需要根据传入的name来选择相对应的配置,图片我们要通过require的方式来引入,不能直接使用相对路径字符串。

importconfigfrom"./config.json";initData(){this.webPetConfig=config[this.name];this.actionList=this.webPetConfig.actionList;this.imgRootPath=this.webPetConfig.imgRootPath;this.imgSrc=require("@/assets/img/"+this.webPetConfig.defaultImg);this.uid="j-web-pet-"+getUId();constlist=this.actionList.map((item)=>{returnitem.name;})||[];this.menuList=list;clearTimeout(this.isRunToTarget);this.isRunToTarget=null;this.menuShow=false;}4、页面初始化根据传入参数及对应的配置来进行页面初始化。

init(){this.nowAction=this.actionList.find((item)=>{returnitem.name==this.defaultAction;})||{};this.showImg=document.getElementById("showImg");this.showImg.style.width=this.petSize;this.showImg.style.height=this.petSize;this.showImg.style.right=this.petSize;this.showImg.style.top="50%";this.showImg.style.transform="";this.mouseEventListen();this.autoRunToTarget();},5、行为菜单栏我们需要有个行为菜单栏来对宠物的行为进行切换,所以我们可以制作一个简易菜单展示,为了防止菜单栏溢出视图窗口,我们可以对其弹出位置进行以下限定:

菜单顶部与宠物的顶部对齐,如下图:

菜单底部与宠物中心对齐,如下图:

菜单从宠物右边弹出,如下图:

菜单从宠物左边弹出,如下图:

实现代码如下:

showMenu(){constw=this.showImg.offsetWidth;consth=this.showImg.offsetHeight;constleft=this.showImg.offsetLeft;consttop=this.showImg.offsetTop;constinnerWidth=window.innerWidth;constinnerHeight=window.innerHeight;constinLeft=left

playImg(action,ind){if(!action||JSON.stringify(action)=="{}")return;letmin=action.min,max=action.max;if(!ind||indmax){ind=min;}this.showImg&&this.showImg.setAttribute("src",require("@/assets/img/"+this.imgRootPath+ind+".png"));clearTimeout(this.isRunToTarget);this.isRunToTarget=setTimeout(()=>{this.playImg(action,ind+1);},500);},7、宠物移动效果实现移动效果我们只需要在图片切换的同时对图片的定位进行修改,便可以简单实现宠物移动的效果,所以我们需要计算每次移动的时候图片的坐标变化量及角度的偏移量。

转化成这么一道数学题之后是不是觉得简单多了?我们只需要解开这道简单的三角函数题目即可:

我们可以通过点A和点B的坐标来求边BC和边AC的长度:

AC=|X2-X1|BC=|Y2-Y1|知道了这两边的长度之后我们便可以求得角θ的度数了。

首先我们应该先了解一下反正切arctan,如果tanθ=y,我们可以得出arctan(y)=θ,所以我们可以通过反正切来求得角θ的大小

但是我们计算的时候两边的长度永远是正的,所以求得的角度区间应该是[0,π/2],所以在下面这种情况(目标点x坐标大于宠物x坐标)的时候,我们应该对其进行一个y轴镜像翻转。

转化成代码如下:

autoRunToTarget(action=this.nowAction,x="",y=""){if(action.isMove){if(!x)x=getRandomNum(0,window.innerWidth);if(!y)y=getRandomNum(0,window.innerHeight);this.runToTarget(action,action.min,x,y,()=>{this.autoRunToTarget(action);});}else{this.playImg(action);}},9、宠物拖动有的时候宠物可能会遮挡到页面内容,我们需要将其拖动移开,这里我们可以对鼠标移动事件和点击事件进行监听处理。

我们需要先点击宠物后使其进入可拖动状态才能开始拖动宠物。

clickPet(e){this.canDrag=true;//设置可拖动状态clearTimeout(this.isRunToTarget);this.startClickX=e.pageX-window.scrollX;this.startClickY=e.pageY-window.scrollY;window.addEventListener("mouseover",this.mouseoverHandler,false);window.addEventListener("mouseup",this.mouseupHandler,false);},2、根据鼠标坐标更新宠物坐标判断当前是否进入可拖动状态,可拖动时根据鼠标坐标更新宠物坐标。

mouseoverHandler(e){if(!this.canDrag)return;constw=this.showImg.offsetWidth/2;consth=this.showImg.offsetHeight/2;this.showImg.style.left=e.pageX-window.scrollX-w+"px";this.showImg.style.top=e.pageY-window.scrollY-h+"px";this.showImg.style.right="";this.showImg.style.bottom="";},3、区分点击事件和拖动事件鼠标抬起时判断是点击事件还是拖动事件,这里我使用拖拽开始位置和拖拽结束位置来做一个简单的判断,拖拽结束后注意清除鼠标的监听事件。

mouseupHandler(e){constendClickX=e.pageX-window.scrollX;constendClickY=e.pageY-window.scrollY;const{target}=e;if(target==this.showImg&&(Math.abs(this.startClickX-endClickX)<10||Math.abs(this.startClickY-endClickY)<10)){this.showMenu();}else{this.menuShow=false;this.autoRunToTarget();}this.canDrag=false;window.removeEventListener("mouseover",this.mouseoverHandler,false);window.removeEventListener("mouseup",this.mouseupHandler,false);},10、播放音频根据配置表获取当前行为的音频,有配对的音频则随机播放音频。

如有侵权,可以联系删除。

目前实现的只是一个简单组件版,后面会继续完善,增加更多的交互功能或交互小游戏,提高组件可配置性,后续还有两个改动方向:

有图片包资源的同学可以赞助下有什么其他好的建议也都可以提出来

当前组件已发布到npm,可以查看组件文档进行引入并配置。

引入后即可直接使用。

Gitee源码:/zheng_yongt…[3]

这里是JYeontu,现在是一名前端工程师,有空会刷刷算法题,平时喜欢打羽毛球,平时也喜欢写些东西,既为自己记录,也希望可以对大家有那么一丢丢的帮助,写的不好望多多谅解,写错的地方望指出,定会认真改进,在此谢谢大家的支持,我们下文再见。

THE END
1.宠物app源码下载游戏源码搭建网站怎么弄出来今年新渠道视频宠物app源码下载 游戏源码搭建网站怎么弄出来 今年新渠道 2024-11-14 07:001次 发布企业 蒙启网络科技有限公司商铺 认证 报价 请来电询价 服务内容 社区团购系统开发 是否定制 是 服务类型 一对一服务 关键词 小程序开发 所在地 全国 联系电话 18680578713 ...https://fuzhou.11467.com/info/32268802.htm
2.宠物店网站模板宠物店网站源码下载程序自主研发、安全易维护、提供源码 利于优化 无在线建站或拖曳建站所产生的垃圾代码,div+css结构,更利于收录和优化 网站所有权 提供模板及后台所有源文件,可以安装到阿里云,腾讯云或自己的服务器 企业级安全 采用自主研发的PageAdmin系统,系统可通过公安部三级等保安全认证 ...https://www.pageadmin.net/moban/4838.cshtml
3.基于宠物领养网站设计:实现萌宠特色功能的源码程序开发随着互联网的普及和宠物行业的快速发展宠物领养网站成为连接宠物爱好者与需要家庭的桥。怎样去在这些网站上实现吸引眼球的萌宠特色功能成为了网站设计者和开发者的关注点。本文将探讨基于宠物领养网站的设计理念以及怎样去通过源码程序开发来实现这些萌宠特色功能让客户在浏览网站时可以体验到更加丰富和个性化的互动体验。 http://www.slrbs.com/jrzg/aitong/128492.html
4.宠物店网站模板整站源码专业建站,就用米拓!宠物店响应式网站模板,网站排名更靠前,使用米拓企业建站系统轻松搞定电脑+平板+手机+微官网+小程序(微信、百度、支付宝、字节跳动、QQ、360)10合1企业官网,一键开通,会打字就会建网站!https://www.metinfo.cn/product/3412.html
5.ASP.NET宠物商店网页MyPetShop源代码购物网站mypetshop 基于net的开发购物网站,web程序设计。asp.net实用网站开发 上传者:u011633481时间:2014-06-05 MyPetShop宠物商店源代码-Web程序设计-ASP.NET三层架构 《web程序设计——ASP.NET实用网站开发》课本第十五章源码和《上机实验指导》实验9 ASP.NET三层架构的源码。语言为C# ...https://www.iteye.com/resource/qq_37652570-10149072
1.html5宠物网站模板源码宠物网站源码html5宠物网站模板源码,宠物网站源码,宠物商城源码,宠物博客,宠物爱好者网站,宠物论坛。通过图文并茂的方式演示,轮播图,表单,图片的放大缩小,好看的布局排版等,各种风格都有,代码上手简单,代码独立,可以直接使用。也可直接预览效果。 1.设计来源 1.1 主界面 ...https://blog.csdn.net/weixin_43151418/article/details/141130093
2.JavaScript前端宠物网站代码宠物小程序源码JavaScript前端宠物网站代码 宠物小程序源码 今天我们看下一个宠物商城的小程序,麻雀虽小五脏俱全:私人订制,合作:加微 code_gg_boy 技术架构: 前端: 微信原生开发,vue 主要功能: 首页,分类,购物车,我的,四个页面 相关源码: { "pages": [ { "path": "pages/index/index",...https://blog.51cto.com/u_16213723/9613409
3.宠物网站页面设计代码,宠物网站模板源码这是17素材网小编精心准备的一款宠物网站页面设计代码,宠物网站模板源码,精美的页面设计布局,响应式设计模板,可以自定义编辑,欢迎大家下载并且使用。https://www.17sucai.com/pins/48543.html
4.宠物领养网站源码,专注收养表单HTML代码,简洁高效,仅输出关键文字...宠物领养网站源码,提供简洁高效的宠物收养表单html代码。用户可通过填写基本信息,轻松提交领养申请。我们致力于打造一个安全、便捷的宠物领养平台,让每只宠物都能找到温暖的家。 5.00点 演示地址查看 后台程序无后台 技术支持无 发布者°sunshine 有效期永久 https://www.moyublog.com/codes/24772.html
5.BT宠物网站管理系统源码,学教实践,Asp.net源码宠物网站管理系统的设计与实现的特点和用户对宠物销售的需求两个方面考虑,系统应该用户的注册与登录、宠物用品以及宠物的展示与搜索、宠物用品以及宠物的管理、购物车、订单的处理、用户留言等信息的管理功能,从用户上应该分为前台买家用户和后台卖家用户。 源码类型: B/S 开发环境: VS2010 + SQL2008 开发语言: ...https://www.51aspx.com/code/BTPetWebsiteSystem
6.响应式宠物资讯类网站源码((自适应手机端))宠物博客经验pbootcms网站模...☉ 如果遇到什么问题,请评论留言,我们定会解决问题,谢谢大家支持! ☉ 本站提供的一些商业软件是供学习研究之用,如用于商业用途,请购买正版。 ☉ 本站提供的响应式宠物资讯类网站源码((自适应手机端)) 宠物博客经验pbootcms网站模板资源来源互联网,版权归该下载资源的合法拥有者所有。https://www.jb51.net/codes/810955.html
7.宠物狗主题官方网站源代码开发技术宠物狗主题官方网站源代码 开发技术 - Web开发〃A**离殇 上传6.63 MB 文件格式 rar 狗狗网站 狗狗源码 资源描述:非常漂亮的狗狗源码,后台用户密码都是admin 点赞(0) 踩踩(0) 反馈 所需:5 积分 电信网络下载 dayong1q 2019-05-01 23:20:19 评论 不错的资源...https://www.coder100.com/index/index/content/id/2300960
8.宠物食品网站模板猫粮狗粮网站源码pbootcms响应式(自适应手机端)pbootcms响应式大气宠物食品动物网站模板 HTML5猫粮狗粮网站源码下载 PbootCMS内核,该模板适用于宠物粮食网站、猫粮狗粮网站等企业,当然其他行业也可以做,只需要把文字图片换成其他行业的即可; 自适应手机端,同一个后台,数据即时同步,简单适用!附带测试数据! http://www.fuyinsh.com/?p=2619
9.html+css宠物网页设计网站模板源码分享U11BG 宠物狗(10页) ## 截图演示 #三、 作品代码 ## HTML代码 ```html <!doctype html> 宠迷网 宠迷网 登录 注册 https://www.jianshu.com/p/171278e09b09
10.计算机毕业设计ssm宠物爱好者交流网站的设计与实现(附源码)新手...当前,宠物爱好者的人数不断增多,然而,专业交流平台却相对稀缺,这一现象值得我们深思。同时,将技术融入宠物爱好者交流平台的开发,无疑是一个值得关注的亮点。这不仅有助于解决爱好者们的交流难题,还能为宠物产业的进步提供有力的数据支持。 宠物爱好者的需求现状 ...https://www.7claw.com/2796596.html
11.宠物领养小程序制作宠物领养微信小程序源码宠物领养小程序制作【宠物领养微信小程序源码】 宠物领养小程序制作平台网站 > 自建&定制【宠物领养小程序】立即注册开始 > ?微信、百度、抖音、头条小程序 ?抽奖、答题、投票、展示等多样化小程序 ?同城、社区、查询、咨询等热点小程序 ?覆盖70+行业,超400+套免费小程序模板立即制作 >...https://qz.fkw.com/news/66237.html
12.源码商城pbootcms模板网站模板源码商城(365Ymw.Com)专注网站模板,网站源码,pbootcms模板,企业网站模板,免费模板,商业模板,响应式模板,营销型网站模板,手机站模板,网站源码下载http://www.365ymw.com/
13.全套源码教程基于SpringBoot+MyBatis+Vue的流浪动物救助网站...项目源码获取请在文末获取博主联系方式! 需求分析 随着人们对动物保护意识的提高,对于流浪动物的救助需求快速增加。该网站可以提供一个平台,让人们更方便地了解和参与流浪动物救助活动。并且网站的设计充分考虑到交互体验和实际使用需求,提供了包括但不限于流浪宠物上架,信息浏览、用户评价、宠物查询、寻宠服务、宠物捐赠...https://cloud.tencent.com/developer/article/2421091
14.(php毕业设计源码)基于php宠物爱好者交流平台管理系统[php毕业设计项目源码,php毕设下载]宠物爱好者交流平台是基于php编程语言和mysql数据库开发,bs架构的系统。本系统是分为用户和管理员两个角色,用户可以查看网站的宠物信息,可以发布交流,回复交流,发布资源文件下载;管理员管理网站的宠物信息,交流信息,资源,注册用户等;本设计结构清晰,功能齐全,注释完善,适合作为php毕业...https://www.bisheyun.com/product/74
15.火锅网站模板检察院做网站的目的房地产公司网站建设许柯wordpress// html | 增加变量id,为id添加类并启动{% for i in is %}作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/article/details/141130093 html5宠物网站模板源码,宠物网站源码,宠物商城源码,宠物博客,宠物爱好者网站,宠物论坛。通过图文并茂的方式演示,轮播图,表单,图片的放大缩小,好看的布局排版...http://www.zldk.cn/zldk/870055.html
16.Web3优秀案例收集整理(附带源码):80+项目创意和案例等待你的...下面是关于web3的一些项目和案例,附带源码地址。 如何使用以太坊、智能合约和Solidity构建你的第一个区块链应用程序? https://youtu.be/coQ5dg8wM2o https://github.com/dappuniversity/eth-todo-list 如何编写和部署NFT? https://ethereum.org/en/developers/tutorials/how-to-write-and-deploy-an-nft/ ...https://maimai.cn/article/detail?fid=1744128853&efid=0ZU5e9Hff_sR0HEXROq_Iw
17.自适应手机端html5响应式旅行社网站模板pbootcms源码PB旅游公司...html5响应式pb旅行社旅游景点企业PBOOTCMS网站模板源码下载 PbootCMS内核开发的网站模板,该模板适用于旅行社网站、旅游景点等企业,当然其他行业也可以做,只需要把文字图片换成其他行业的即可; PC+WAP,同一个后台,数据即时同步,简单适用...http://www.jinluzi.cn/9472.html
18.站长宝贝源码pb模板网pbootcms模板下载pboot企业模板PbootCMS模板.站长宝贝模板网(AdminBaby.com)专注pbootcms模板制作及整合.包括pboot企业网站模板,pb精品模板,pbootcms免费模板,pbootcms源码,pbcms模板,PbootCMS整站模板带数据下载和pb开发教程仿站等http://www.adminbaby.com/
19.(附源码)springboot萌宠宠物网店的开发与设计毕业设计011042在社会快速发展的影响下,宠物用品业继续发展,大大增加了宠物用品的数量、多样性、质量等等的要求,使萌宠宠物网店的管理和运营比过去十年更加困难。依照这一现实为基础,设计一个快捷而又方便的萌宠宠物网店是一项十分重要并且有价值的事情。对于传统的萌宠宠物网店用品价控制模型来说,萌宠宠物网店具有许多不可比拟的...https://m.mcbbbk.com/newsview589887.html
20.流浪猫流浪狗宠物领养平台H5源码Thinkphp5内核Thinkphp5内核流浪猫流浪狗宠物领养平台H5源码 可封装APP 适合做猫狗宠物类的发信息发布。 当然懂的修改一下,做其他信息发布也是可以的。 声明:本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络收集整理,版权争议与本站无关...http://www.yswl1.com/?p=38401
21.基于springboot的宠物商城系统java毕业设计从戎源码网Java源码 正文 项目介绍——NO.githubcode009 一、系统介绍 未注册用户 非注册用户(即游客身份)进入宠物官网首页,可以浏览关于宠物的宣传以及医院发布的文章,进入宠物商城浏览正在发售的商品,搜索已发布的文章和商品,注册以及登录。 已注册用户 注册用户可以修改个人信息和宠物信息,发布预约单(预约医生和美容师),在医院...https://armycodes.com/4838.html
22.下码站源码之家资源分享网提供免费的网站源码源码下载 > 百万源码免费下载 1营销型精密仪器设备类网站织梦模板源码下载(带手机版数据同步) 热度(4) 22020最新第四方聚合支付系统源码+银联快捷支付+支付宝扫码+支付宝wap+公众号+微信扫码 热度(7) 3酒仙网ecshop模板 热度(6) 4大话西游精品法宝端-玲珑塔-定制宠物-神器-时装特效-孩子-八卦-变身卡 ...https://www.xiamazhan.com/