精灵图动画canvas

如何使用精灵图

<!DOCTYPE html>
<html>

<head>
	<meta charset="utf-8" />
	<title>序列帧动画</title>


</head>
<style>
	* {
		padding: 0;
		margin: 0;
	}

	.box1 {
		position: relative;
	}

	.cs1 {
		position: absolute;
		width: 180px;
		height: 300px;
		top: 0;
		left: 0;
		background-color: rgba(0, 0, 0, .3);
	}

	div {
		background: url(./img/girl.png) center;
		background-repeat: no-repeat;
		/* background-position-x: 720px; */
		background-position-x: -1080px;
		width: 180px;
		height: 300px;
		animation: run;
		animation-duration: 1s;
		animation-iteration-count: infinite;
		animation-timing-function: steps(6);
	}

	@keyframes run {
		0% {
			background-position-x: -1080px;
		}

		100% {
			background-position-x: 0px;
		}
	}
</style>

<body>
	<!--Just do it!-->
	<dl class="box1">
		<img src="./img/girl.png" class="img" alt="">
		<dd class="cs1"></dd>
	</dl>
	<div>

	</div>
	<canvas id="canvas" class="canvas" width="360" height="600" style="background:red;transform: scale(.5);">您的浏览器不支持
		HTML5 canvas 标签。</canvas>
	<script>


		// ctx.drawImage(image, dx, dy)
		// image:需要绘制的img图片

		// dx, dy:绘制的img图片在canvas中的坐标(x, y)
		//绘制图片
		// ctx.drawImage(image, dx, dy, dw, dh)
		// image:需要绘制的img图片
		// dx, dy:绘制的img图片在canvas中的坐标(x, y)
		// dw, dh:绘制的img图片在canvas中的大小(w, h)宽高

		// ctx.drawImage(image, sx, sy, sw, sh, dx, dy, dw, dh)
		// image:需要绘制的img图片
		// sx, sy, sw, sh:定义图像源的切片位置和大小
		// dx, dy, dw, dh:定义切片的目标显示位置和大小

		document.querySelector(".img").onload = function () {
			var canvas = document.getElementById("canvas");
			var ctx = canvas.getContext("2d")
			// //创建图片
			let img = document.querySelector(".img")
			let step = 0
			setInterval(() => {
				ctx.clearRect(0, 0, 360, 600);
				if (step % 7 == 6) {
					step = 0
				} else {
					step++
				}
				console.log(12, step, 180 * step, 180 * (step + 1))
				ctx.drawImage(img, 180 * step, 0, 180, 300, 0, 0, 360, 600);
			}, 130);
		}
	</script>
</body>

</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值