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

原创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.宠物网站模板宠物网页模板免费企业网站模板自助建站凡科建站为您提供宠物网站模板、宠物网页模板、免费企业网站模板,行业全面,0基础建网站,让您可以在线制作网站模板。https://jz.fkw.com/biaoqian/252632/
2.宠物系列海报帝奇是条宠物犬的宠物系列海报画板,该画板属于花瓣网未知相关类别的资源,其中共收集了7关于宠物系列海报相关的图片素材资源,共被4人关注。花瓣网, 设计师寻找灵感的天堂!https://m.huaban.com/boards/45150692/
3.网站默认名称?宠物群名称?首页是一个网站与用户“见面”的第一个页面,所以网站的默认首页文件取名是有讲究的,一般是下面几个文件名中的一个:index.html、index.htm、index.asp、default.html、default.htm、default.asp。 宠物群名称? 群名称:猫狗乐园 猫狗乐园是一个由猫和狗组成的宠物群名称,它的意思是你的宠物就像在一个乐园里一样...http://www.08bn.com/wd/411780.html
4.宠物森林官方网站刚刚进入《宠物森林》的你,这个阶段就先来好好熟悉一下吧。 10到29级完全指南 这阶段将接触到庄园经营|卡片合成精炼|公会等系统。 30到49级完全指南 神秘的冒险地图,将在这阶段一步步向你敞开大门。 50到79级完全指南 来参加矿山争夺战以及奥斯兰精英挑战赛吧![...http://mf.9you.com/
5.安安宠医高端网站建设案例网站设计使用温馨的医生与宠物背景吸引用户,全屏式的展示堪称完美。随着页面滚动,导航栏会自然的移动到页面顶部固定。网站设计层次清晰,且保持着一定的复杂度。 动态交互 采用一屏式的切换展示方式,内容的渐入动效让画面生动丰富、错落有致,按钮选中时会有膨胀收缩及液体溅射的动效,显得页面活泼明亮,符合宠物品牌对亲和力...https://www.asl.com.cn/case_website_detial/145_2.html
6.建站模板免费企点客服直销软件开发广东东莞疫情风险等级温州网站制作哪家好300元免费开发小程序设计本app小程序开发外包网页设计试题及答案哈尔滨建设工程有限公司dw安装免费下载网站建设需要哪些内容深圳网站设计 三把火科技html网页制作代码模板2024年营业执照年审入口网页设计五个页面网站界面设计案例四川成都疫情最新消息关于化妆品的网页设计宁波网页设计机构北...http://www.ttjkj.cn/news/495233.shtml
7....海贼王乔巴网页作业成品动漫网页作品学生网站源代码下载Dreamweaver编写的,有十个页面, 上传者:crazy_cat0913时间:2017-03-25 学生网页设计作业源码(HTML+CSS)——海贼王6页代码质量好 HTML5期末考核大作业源码 包含 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞 蹈、 动漫、 服装、 体育、 化妆品、 物流、 环保、 书籍...https://www.iteye.com/resource/LILIXING_COM-13200356
8.拍拍——京东旗下二手交易平台拍拍是爱回收联合京东集团共同打造的品质二手零售平台,独家经营京东平台上的二手业务,业务涵盖拍拍优品,包含自营及商家店铺;夺宝岛包含大牌一元起拍;拍拍清仓包含企业清仓及微瑕处置。https://www.paipai.com/
1.宠物网页素材宠物网页图片宠物网页素材图片下载觅知网为您找到5个原创宠物网页素材图片,包括宠物网页图片,宠物网页素材,宠物网页海报,宠物网页背景,宠物网页模板源文件下载服务,包含PSD、PNG、JPG、AI、CDR等格式素材,更多关于宠物网页素材、图片、海报、背景、插画、配图、矢量、UI、PS、免抠,模板、艺术字、PPThttps://www.51miz.com/so-sucai/3704435.html
2.中国宠物网中国宠物网(www.poeoo.com)致力于打造宠物网络大数据平台,专注于宠物领域企业服务的门户网站。提供专业宠物行业资讯、宠物商机、宠物招商、宠物企业及产品。http://www.poeoo.com/
3.全国十大宠物网站排名国内宠物网站大全全国最大宠物网推荐全国最大宠物网站之一,宠物用品电商平台,汇聚全球知名品牌、国内新兴品牌,以及自有品牌,主营狗狗、猫咪、小宠、水族、爬虫的相关用品,包括但不限于主粮、各类型饲料、医疗护理、生活用具、保健品等。波奇宠物隶属于光橙(上海)信息科技有限公司,2020年9月30日在纽约证券交易所挂牌,成为中国首个上市的宠物综合服务平台。https://m.maigoo.com/citiao/list_105161.html
4.宠物网站页面设计代码,宠物网站模板源码这是17素材网小编精心准备的一款宠物网站页面设计代码,宠物网站模板源码,精美的页面设计布局,响应式设计模板,可以自定义编辑,欢迎大家下载并且使用。https://www.17sucai.com/pins/48543.html
5.宠物网站页面设计简笔百度收录有什么好处装修网站建设摘要宠物网站页面设计简笔 2024-11-15 12:49:22 150163 第三章 系统分析 开店铺的流程微信公众号商城搭建国际品牌的ui设计公司网页设计与制作教程刘瑞新课后答案展台设计搭建服务加盟连锁网页代理 最干净宁波网络公司装修怎么选官网是怎么做的游戏挂机云服务器国外的浏览器高端ppt制作免费做什么代理最赚钱企业解决方案公司有...http://www.jwypb.cn/news/1531714.shtml
6.HTML5网页期末作业基于HTML+CSS+JS实现宠物网站,表单展示登录...(自适应手机端)HTML5猫粮狗粮网站源码 pbootcms响应式大气宠物食品动物网站模板 安装教程:www.diyiyuanma.cn/100.html快速收录推送工具:www.diyiyuanma.cn/122.html效果演示:diyiyuanma.lxsjfx.cn/a/101/1217 自适应,同一个后台,数据即时同步,简单适用!附带测试数据! 友好的seo,所有页面均都能完全自定义 ...https://download.csdn.net/download/bigwhiteshark/86395174
7.16个精美的公司网站设计欣赏,耳目一新!这套个人信誉数据可视化网站模板,有浅色和深色两种模式,包含数据、客户、账单、邮件和工具等多个板块,经典的左右分区数据模块清晰直观,重点数据模块放置在最加视觉位。此套公司网站设计模板多用于B端企业的后台管理。 个人信誉查询仪表盘 15. 宠物护理网站登录页面 这套是配色比较活泼的宠物护理公司网站登录页模版,以温暖...https://pixso.cn/designskills/gongsiwangzhansj/
8.(完整版)宠物网站毕业论文设计.doc优秀论文审核通过未经允许切勿外传目录一引言 .2二 需求分析 .3二可行性分析 .3三功能需求分析 .4四开发环境需求 .5三系统设计 .5一系统功能模块图 .https://www.renrendoc.com/paper/163056655.html
9.斑点狗宠物网页模板码农集市专业分享IT编程学习资源斑点狗宠物网页模板是一款专为宠物相关网站设计的页面模板,它可以帮助用户快速搭建具有专业外观和用户体验的宠物服务网站。这款模板以其独特的斑点狗主题,吸引着喜爱宠物的用户群体,同时展现了对宠物行业的关注和专业性。 1. 网页模板的基本概念 网页模板是预先设计好的网页结构,包含了页面布局、颜色搭配、图像设计等...https://www.coder100.com/index/index/content/id/3995580
10.宠物卖家需注意自查!多款热销产品外观专利下证!宠物围栏可以为宠物打造舒适的小天地,吸引不少铲屎官购买。亚马逊上在售相关Listing达1000+,其中月销过千的产品不在少数。 图片来源:亚马逊网站截图 8月6日有3款宠物围栏外观专利下证,均是同一申请人在2024年3月15日提交申请的,专利名称Pet playpen,专利号分别为USD1038533S、USD1038534S、USD1038535S: ...https://www.cifnews.com/article/163329
11.www.shuofangjituan.com/apfnews56550037/026524.shtml日本黄在线观看网站页面 610.11MB 314好评 人人干人人色 蜜乳视屏 国产AV亚AV无码成人电影 773.30MB 447好评 jiZZjiZZ黄大片 校长在校花身体里进进出出 亚洲元马一级片 12.71MB 8488好评 韩国一级黄色视频在线免费观看 亚洲熟女操逼视频 91厕所在线 94.83MB 64好评 黄色片A毛 免费黄色软件...http://www.shuofangjituan.com/apfnews56550037/026524.shtml
12.提升网站页面质量的6大重要因素简介北京沃西基网络科技有限公司(www.woocg.com)成立于2011年,提供宠物食品、玩具、护理用品及美容服务,全方位满足宠物和宠物主人的需求。宠物店电话:13486838241,欢迎来电。 一个网站的提升页面是由多元素组成如:代码、排版、网站内容、页面广告、质量重因内链等等。提升这些元素全部组成就是网站网站页面,然后如何构成...http://www.woocg.com/youhua/2f399994.html%20l
13.Jinx宠物用品商店兽医网站WooCommerce主题Jinx 是我们为动物和宠物食品 WooCommerce 设计的真正令人惊叹的电子商务主题。除了完全兼容 WooCommerce 之外,您还可以使用一套华丽的商店页面布局和元素。如果您想创建一个令人眼花缭乱的动物商店、宠物商店、猫商店、狗商店网站,那就别无所求;金克斯来了!https://www.22vd.com/65585.html
14.10个优秀个人网站作品欣赏,建议收藏这是一个宠物促销网站,网站内拥有大量的宠物图片与它们的名字、介绍、出生日期等信息。这是一个专为宠物设计的网站,其中还有宠物用品购买渠道。 7、音乐网站设计 整体为深色背景模式,是一个成熟的音乐网站设计模板,作品内容十分全面,歌曲信息、歌手简介、聊天页面、社区互动讨论等等,应有尽有。 https://js.design/special/article/personal-website-appreciation.html
15.免费h5制作网站h5模板网站在线h5页面制作平台模板种类涵盖了网店、宠物、餐饮等60+行业,适用于企业官网、个人博客、政府门户网站等。如果您想要花较短时间完成H5网站的编辑,那么模板就是一个很好的选择。使用模板可以使H5网站呈现出模板的样式(即安装使用模板后,H5网站的页面就和模板显示的一致),然后在后台维护上您自己H5网站的产品、文章等数据后,再稍微调整一...https://www.huaweicloud.com/special/h5-website.html
16.茶杯犬风波5元小狗背后的宠物市场现象与挑战摘要:茶杯犬风波:5元小狗背后的宠物市场现象与挑战 宠物市场的异常现象 买小狗5元一只茶杯犬,这个价格让人难以置信。它反映出当前宠物市场的一种极端现象,即低价出售宠物。 生产成本与利润空间 低价出售宠物背后,是生产成本的压缩和销售策略的调整。企业可能采用大规模生产、削减运营成本等手段来降低单件产品的价格。 消...https://www.wazxzpm.cn/chong-wu-zi-xun/502326.html
17.全套源码教程基于SpringBoot+MyBatis+Vue的流浪动物救助网站...该功能模块主要用户发布流浪动物救助相关的公告信息,方便人们可以第一时间看到系统中的宠物相关公告。 商品页面 除了能够在界面中展示宠物相关的一些信息之外,系统还支持展示和购买与流浪动物有关的一系列商品,例如宠物玩具,宠物药品,宠物设施、以及公益物品等。 https://cloud.tencent.com/developer/article/2421091
18.宠物订单结算页面引入店铺入驻页面组件 import ShopRegister from './views/ShopRegister' // 引入寻主信息 import SearchMasterMsgPending from './views/pet/SearchMaster...{ path: '/petType', component: Department, name: '宠物类型管理' } ] }, + { + path: '/', + component: Home, + name: '订单管理', ...https://gitee.com/wjmd/pethome-web-parent/pulls/4.diff
19.萌宠乐园主题网页设计与用户体验研究2、用户体验友好性:网页设计应充分考虑用户的使用体验,包括页面加载速度、导航便捷性、操作简便性等方面,以提高用户的满意度和忠诚度。 3、互动与社交性:萌宠乐园网页应融入互动和社交元素,如宠物社区、在线问答、宠物交友等,丰富用户的参与感和体验感。 https://www.beitazoo.com/case/265277.html