ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JavaScript(2):JS实现小女孩行走

2021-04-13 21:07:41  阅读:360  来源: 互联网

标签:function buzi dom JavaScript JS 小女孩 行走 left


JS实现小女孩行走

用JS实现小女孩行走,行走的过程实际上就是图片不断移动的过程,把多张图片组合在一起,利用人眼反应速度没有图片更换速度快的原理,实现了小女孩行走。

基本思路是小女孩从浏览器最左边开始出现,每个小女孩出现的高度位置是随机的,速度也是随机的。

实现起来并不难,但用到了js面向对象的思维,下面通过代码方式来分析小女孩行走。

<!DOCTYPE html><html><head><meta charset="utf-8"><title></title></head><style type="text/css">.girl {
			position: absolute;/* 大小设置为小女孩的大小,不是整张图片的大小 */
			width: 79px;
			height: 108px;/* 设置整张背景图片 */
			background-image: url(img/girl.png);/* 定位到小女孩从左往右走的图片 */
			background-position: 0px -216px;
			left: 0px;
			top: 0px;}</style><body><div class="girl"></div></body></html><script type="text/javascript">function Girl() {//步子为0this.buzi = 0;//步长的随机1-10this.step = parseInt(Math.random() * 8 + 1);this.timer = null;//小女孩都是从最终版出现this.left = 0;this.dom = null;// 浏览器高度this.maxTop = (document.documentElement.clientHeight || document.body.clientHeight) - 108;//小女孩出现的高度this.top = parseInt(Math.random() * this.maxTop);this.dom = null;// 构造函数的调用方法this.init();//再调用行走的方法this.walk();}// 方法绑定到原型上面
	Girl.prototype.init = function() {// 添加一个元素,并添加到页面this.dom = document.createElement('div');// 添加类名this.dom.className = 'girl';// 设置不同的top定位this.dom.style.top = this.top + 'px';// 添加到页面
		document.body.appendChild(this.dom);}// 行走的方法
	Girl.prototype.walk = function() {//桥接,这里的this赋值给一个变量var that = this;// 在定时器中用this是window,所以下把this保留下来,指向问题,每隔100毫秒走一步this.timer = setInterval(function() {//步子累加
			that.buzi++;//验证
			that.buzi = that.buzi > 7 ? 0 : that.buzi;

			that.left += that.step;if (that.left > 1200) {
				that.die();}// 设置当前元素的变化
			that.dom.style.backgroundPositionX = -79 * that.buzi + "px";
			that.dom.style.left = that.left + 'px';}, 100)}// 死亡的方法
	Girl.prototype.die = function() {//停止定时器clearInterval(this.timer);//移除这个div
		document.body.removeChild(this.dom)}//没隔500毫秒创建一个小女孩对象setInterval(function() {new Girl();}, 500)</script>

效果:
在这里插入图片描述

标签:function,buzi,dom,JavaScript,JS,小女孩,行走,left
来源: https://blog.51cto.com/u_15163444/2704052

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有