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

原创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.宠物网页设计素材网站图片免费下载宠物网页设计 「你出海我搭台」双十一超多福利 -高性能云服务器/cdn/waf/ssl证书免费用! 「你出海我搭台」双十一超多福利 -高性能云服务器/cdn/waf/ssl证书免费用! https://www.zcool.com.cn/tag/ZMTk4Njc2MA==.html
2.宠物网页模板免费下载(44套)纯色漂亮的宠物猫企业网站模板 萌宠爱狗人士博客单页网页模板下载 宠物家园宽屏大气响应式网页模板 绿色简洁野生动物园官网企业模板 绿色宽屏宠物dog乐园网站模板 橙色商品推广响应式bootstrap模板 宠物之家美容店企业网站模板 宠物乐园响应式网页模板 个性的宠物网站模板 ...http://www.webmoban.net/tag/137.html
3.建站模板免费企点客服直销软件开发广东东莞疫情风险等级温州网站制作哪家好300元免费开发小程序设计本app小程序开发外包网页设计试题及答案哈尔滨建设工程有限公司dw安装免费下载网站建设需要哪些内容深圳网站设计 三把火科技html网页制作代码模板2024年营业执照年审入口网页设计五个页面网站界面设计案例四川成都疫情最新消息关于化妆品的网页设计宁波网页设计机构北...http://www.ttjkj.cn/news/495233.shtml
4.巴伦宠物h5微信短视频h5页面制作巴伦宠物 由兔展免费为您提供观看,h5页面制作工具、微信网页制作,电子邀请函制作app,微信邀请函短视频等上兔展即可免费制作,更多h5素材、短视频、小程序请关注兔展https://www.rabbitpre.com/preview/app-ANf2Yfl.html
5.H5页面制作电子邀请函模板海报模板互动营销模板【人人秀互动营销模板商店】为您提供海量的互动营销模板,包含H5模板/邀请函模板/招聘模板/简历模板/海报模板/小程序模板/问卷调查模板等.免费模板每周更新,轻松制作微信互动营销活动.http://www.rrx.cn/
6....大学生网页成品,静态网页设计教程,htmlcss网页制作,javaweb...html+css+js制作的间谍过家家动漫主题3页-js表单验证 ¥25 TOM源码 html+css制作的火影忍者简单动漫网页,5页 ¥25 TOM源码 html+css制作海贼王动漫网页纯黑风格-6页 ¥30 购物商城 更多 TOM源码 html+css制作的宠物狗售卖商城5页 1 ¥25 TOM源码 http://www.jshtml.cn/
7....html学生网页成品模板设计制作定制div+css静态前端源码dw网站...编号cp开头的网页成品,都是店主亲自制作设计的原创作品,代码干净整洁规范,登记去向-可查重。 13932111771(微信同步) 首页 1 2 3 4 5 下一页 末页 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 ...http://www.html01.com/
1.萌趣可爱!12张宠物主题的网站WEB设计优优教程网宠物网站的Web设计旨在营造出亲切、可爱和家庭友好的氛围,提供丰富的内容和便捷的用户体验,以吸引宠物爱好者并满足他们的需求。https://uiiiuiii.com/inspiration/1616627289.html
2.宠物网站模板宠物网页模板免费企业网站模板自助建站凡科建站为您提供宠物网站模板、宠物网页模板、免费企业网站模板,行业全面,0基础建网站,让您可以在线制作网站模板。https://jz.fkw.com/biaoqian/252632/
3.猫咖网页设计Tags标签猫咖网站的模板可以通过使用一些网站模板引擎来创建。这些引擎提供了大量的可定制的网站模板,可以根据需要进行选择和修改。例如,可以使用WordPress-猫咖网络科技有限公司 哆啦Ai流程自动化 免费 猫咖网站模板设计_猫咖宣传页 猫咖网站模板设计可以根据不同的需求和风格进行定制,以下是一些常见的猫咖网站模板设计建议:1.简洁...https://doraai.com/tags/55685.html
4.无锡网页网站制作公司教学网站网页制作无锡网页网站制作公司18638115656www.ftlkn.cn教学网站网页制作1.7程序 程序将采用新版响应式架构,兼容各类屏幕,如ipad,iphone,笔记本等大小不一致屏幕,企业网站包含:首页,轮播图,新闻中心,企业新闻,企业介绍,联系我们,产品分类,产品介绍,Cache缓存http://www.ftlkn.cn/news/6667594.shtml
5.免费h5制作网站h5模板网站在线h5页面制作平台H5页面制作的大致流程:找一个专业靠谱的H5网页制作平台,开通站点后,选择合适的模板,就能开始编辑您的网页了。 华为云H5模板建站平台 企业门户服务(Cloud Site-building Service)是一款帮助您搭建网站的华为云服务。提供PC、手机、微信公众号、小程序、APP五站合一的模板建站产品,无需代码,自由拖拽,快速生成中小企业网站...https://www.huaweicloud.com/special/h5-website.html
6.b·必一运动在线网页版(官方)网站/网页版登录入口/手机版最新版一旦进入b·必一运动在线网页版正版下载官网,您会在页面上找到一个醒目的注册按钮。点击该按钮,您将被...- 定期查看市场行情,了解哪些物品的需求量大,以便选择制作方向。 3. 参与市场交易 游戏内的市场系统允许...- 选择适合自己玩法的宠物,增强战斗力。 5. 参与公会活动 加入一个活跃的公会,不仅能获得社交乐趣,...https://zuci.xuenb.com/%E9%B4%88_zuci/
7.分享64个HTML宠物网站模板,总有一款适合您宠物博客网站宠物寄养护理服务响应式网页模板 宠物商店中心响应式网页模板 宠物兽医服务响应式网页模板 宠物养护项目动态响应式网页模板 宠物健康护理响应式网页模板 宠物保姆服务响应式网页模板 宠物医院护理响应式网页模板 宠物托管服务响应式网页模板 可爱宠物护理项目响应式网站模板 ...https://blog.csdn.net/2401_86528135/article/details/142330104
8.202408桃红世界网页进入http://www.cclab.cn/yydh/Content/363585.html
9....HTML+CSS+JavaScript网页设计实例企业网站制作[建议收藏...10.大学web基础期末大作业~仿品优购页面制作(HTML+CSS+JavaScript) 11.HTML网页设计制作大作业-制作漫画网页设计6个页面(HTML+CSS+JavaScript) 12.web前端大一实训~制作卡布漫画网站设计与实现(HTML+CSS+JavaScript) 13.web网页设计期末课程大作业~超高仿英雄联盟LOL游戏官网设计与实现(HTML+CSS+JavaScript) ...https://blog.51cto.com/14890362/3317960
10.宠物网站页面设计简笔百度收录有什么好处装修网站建设摘要宠物网站页面设计简笔 2024-11-15 12:49:22 150163 第三章 系统分析 开店铺的流程微信公众号商城搭建国际品牌的ui设计公司网页设计与制作教程刘瑞新课后答案展台设计搭建服务加盟连锁网页代理 最干净宁波网络公司装修怎么选官网是怎么做的游戏挂机云服务器国外的浏览器高端ppt制作免费做什么代理最赚钱企业解决方案公司有...http://www.jwypb.cn/news/1531714.shtml
11.分享15个精美的html网页模板,快速建站必备!这是专门为响应式网站设计的UI组件合集,包含常用的60多个设计组件,可以充分满足常规的响应式网站开发,为你的公司节省成本。另外,这套UI组件设计风格简约、精美,符合当下设计流行趋势,十分适合设计新手学习使用。 14. 宠物网站登录页设计模板 宠物网站登录页设计模板 - 免费领取 ...https://pixso.cn/designskills/html-web-resourcel/
12.如何为宠物制作名片二维码?宠物二维码“身份证”的制作方法如下: 1,登录二维彩虹二维码生成器官方网站 www.erweicaihong.cn 2,选择“H5编辑”,填写内容 此H5页面支持填写文字内容,还能插入宠物图片。如果你的宠物有比较特殊需要注意的情况,也可以在此页面编辑相关信息。此外,你的联系方式也要填写在此处,万一宠物走失,以便路人可以及时与你取得联...https://www.erweicaihong.cn/chongwubaohu
13....网页模板网站模板网页设计网页开发HTML生成工具在线制作...美观专业的行业网页模板,搭配高效的可视化HTML构建器,免费在线设计网页,兼顾设计师和开发者,无需编程背景,支持可视化拖拽编程,摆脱繁琐的UI布局。高效页面产出,在线网页制作神器 !https://www.htmlpage.cn/
14.实时H5制作网站H5页面免费在线设计h5免费制作平台《xl上司接档》免费不卡在线观看 - 全集剧情 - 北洋影院电,Zoom 与人性 Zoom1:视频会议的进化演变-软件测评-上海南易,正在播放《狂飙》第39集(免费)电视剧在线观看_23影视,《甜蜜惩罚.我是看守专用宠物免费观看带翻译》高清不卡在,《火热的领居中文字》-2k高清免费在线观看 - 塞舌尔军旅片,「老师拉我去办公室做...https://m.kaoguai.com/video30400/20241107.shtml?id=271220241112.scm
15.优秀个人网页(通用8篇)我所从事的岗位是网络美工,工作主要涉及到网站的广告设计,广告图片替换,页面策划修改;网站的页面制作,样式修改,后期维护等不同工作。可以说凡是需要突出我们网络部及网站整体形象的地方,就需要美工参与工作。 设计工作是痛苦并着快乐,每当面临重大的设计任务时充满了压力,开始搜集各种资料(包括文字的、图片的),接下来寻...https://www.360wenmi.com/f/filee6orn0kk.html
16.毕业设计(论文)宠物商城网站系统管理系统制作期间,我也遇到过一些难题,模块拆分不够精细,以及数据表需要设计几张表,还有对于开发技术的深度理论学习还不充分等,不过我能够通过网络或者通过学院提供的图书馆寻求解决办法。比如在不知道具体功能的情况下,我从网上下载了很多的与宠物商城网站系统管理系统相关的程序,分析了它们的功能之后,...https://m.renrendoc.com/paper/323103030.html
17.Jinxv1.0.4–宠物店和兽医WooCommerce主题Jinx v1.0.4 – 宠物店和兽医WooCommerce主题 Jinx是我们为动物和宠物店Food WooCommerce设计的一个真正令人惊叹的电子商务主题。除了与WooCommerce完全兼容外,一套华丽的商店页面布局和元素可供您完全使用。如果你想创建一个令人眼花缭乱的动物商店、宠物商店、猫商店、狗商店网站,就不要再往下看了;金克斯来了!https://www.yundic.com/jinx-v1-4-chong-wu-dian-he-shou-yi-woocommerce-zhu-ti/