日记

20024.3.27

日常打卡,学学前端三件套,java

今天学了一点三件套,其中前部分注释为我所写

<!DOCTYPE html><!--定义文档类型,是个html5文档-->
<html lang="en"><!--开始html文档,并规定文档所用语言用英文-->
<head><!--开始了文档的头部部分(通常包括元数据,链接到样式表和脚本等)-->>
	<meta charset="UTF-8"><!--定义了文档的字符编码为utf-8,以便于支持各种语言字符-->
	<title>动动球</title>
	<style>/*开始了一个内联样式部分,用于定义css样式*/
		body{/*定义了一个CSS规则,设置body元素的margin(外边距)为0*/
			margin: 0;
		}
		.bubble{/*定义了一个CSS选择器.bubble,并设置了两个样式属性背景和显示方式*/
			background-color: rgb(0, 0, 255);
			display: block;
		}
	</style><!--结束了内联样式部分-->
</head><!--结束了文档的头部部分-->>
<body><!--开始了文档的主体部分,即网页的可见内容区域-->>
	<canvas class="bubble"></canvas><!--创建了一个<canvas>元素,并为其分配了一个CSS类bubble,<canvas>元素用于在网页上绘制图形,动画,图像-->>
	<script>/*开始了一个script标签,用于嵌入或链接javascript代码*/
		/*
			1.将canvas宽高设置的和浏览器一样 
			   - 注意,获取浏览器的高度  window.innerWidth/innerHeight
			   - 赋值,可以直接 canvas.width = w; canvas.height = x; 因为canvas本身有width height属性
			2. oop面向对象编程。每个球都是一个对象,其所有的方法,属性写在其原型链上
			   - Bubble.prototype.init()  初始化函数,初始化需要确定bubble的x,y 位置 r半径等,用随机数生成大小不一的球;
			      - 初始化init(x,y) 与 init() 的不同,鼠标跟随要求确定的x,y,随机生成要求随机,实现函数重载 overload解决此问题
			   - Bubble.prototype.draw()  根据init的位置,半径等,画出图形。 注意canvas上 beginPath()的重要性
			   - Bubble.prototype.move()  利用定时器进行不断调用,通过改变bubble的x,y,重绘来实现动画效果。注意每次擦除桌布
			3. 鼠标跟随
			   - canvas.addEventListener('mousemove',function (e) {})  函数中,记录e.pageX  e.pageY,赋值,绘图
		*/
		var h = window.innerHeight,/*定义了一个变量h,并将它初始化为当前浏览器窗口的内部高度(不包括工具栏和滚动条)*/
			w = window.innerWidth,/*定义了一个变量w,并将它初始化为当前浏览器窗口的内部宽度(不包括工具栏和滚动条)*/
			nBubble = [];/*定义了一个数组nBubble,并初始化为一个空数组,可能用于存储泡泡对象的引用*/
		var canvas = document.getElementsByClassName('bubble')[0],/*用getElenmentsByClassName方法获取页面上所有类名为bubble的元素,并取第一个元素赋值给变量canvas*/
			conT = canvas.getContext('2d');/*从canvas元素中获取2d渲染上下文,并将其赋值给cont。这个上下文对象用于在canvas上绘制图形*/
		(function () {
			canvas.width = w;
			canvas.height = h;
			window.onresize = function () {
			h = window.innerHeight;
			w = window.innerWidth;
			canvas.width = w;
			canvas.height = h;
		}
		})();
		function Bubble (x,y) {
			this.colorData = ["rgb(94,213,209)","rgb(255,110,151)","rgb(199,255,236)","rgb(0,255,128)","rgb(208,233,255)"];
			if(arguments.length == 0){
				this.init();
			}else{
				this.init(x,y);				
			}

			this.draw();
			this.vX = random(-1,1);
			this.vY = random(-1,1);
		}
		Bubble.prototype = {
			init : function (x,y) {              //实现 函数的 overload
				if(arguments.length == 0){
					this.x = random(0,w) ;
					this.y = random(0,h);					
				}else{
					this.x = x;
					this.y = y;
				}
				this.r = random(3,8);
				this.color = this.colorData[Math.floor(random(0,5))];
			},
			draw : function () {
				conT.beginPath();
				conT.fillStyle = this.color;
				conT.arc(this.x,this.y,this.r,0,2*Math.PI);
				conT.fill();
			},
			move : function () {
				this.x += this.vX;
				this.y +=this.vY;
			},
			conllisionDect : function () {
				if(this.x - this.r < 0 || this.x + this.r > w){
					this.vX = -this.vX;
				};
				if(this.y - this.r < 0 || this.y + this.r > h){
					this.vY = -this.vY;
				}
			}
		}
		creat(200);
		window.setInterval(function () {
			conT.clearRect(0,0,w,h);
			for(var key of nBubble){
				key.move();
				key.draw();
				key.conllisionDect();
			}
		},1000/60)
		canvas.addEventListener('mousemove',function (e) {
			var x = e.pageX,
				y = e.pageY,
				len = nBubble.length;
			nBubble[len] = new Bubble(x,y);
			console.log(x,y);
		})
		function random(min,max) {
			return Math.random() * (max - min) + min;
		}
		function creat(num) {
			for(var i = 0; i< num; i++){
				nBubble[i] =  new Bubble();
			}
		}

	</script>
</body>
</html>
posted @ 2024-03-27 21:06  pengfu_xin  阅读(1)  评论(0编辑  收藏  举报