HTML 中使用 Canvas 2d 让静态图片动起来

本文介绍了一段使用JavaScript实现的动态代码,通过数组存储图片路径,并利用Set缓存图片内容,创建了一个500x500像素的canvas,实现每3秒切换显示150张图片的轮播效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
</head>
<body style="background-color: black;">
    <!-- 图片显示区域 -->
    <canvas id="canvas" style="border:1px dashed gray;" width=500 height=500></canvas>
    <script>
        let imageList = []; // 图片路径数组
        for(let i = 0; i < 150; i++){
            let index = i + "";
            imageList.push({url: `./earth/\u5408\u6210%202_00${index.padStart(3, "0")}.png`});
        }

        let imagesMap = new Map(); // 用户缓存获取的图片内容
        var canvas = document.getElementById("canvas");
        var context = canvas.getContext("2d");

        //  绘制图片
        imageList.forEach((img, i) => {
            let newImage = new Image();
            newImage.src = img.url; 
            newImage.onload = () => {
                imagesMap.set(i, newImage); // 将图片缓存下来!
            }
        })

        let i = 0;
        function render(){
            let image = imagesMap.get(i%150);
            if (image){
                if (i%3==0){
                    context.clearRect(0,0,500,500);  
                    context.drawImage(image, 0, 0, 500, 500);
                }
                
                i++;
            }

            requestAnimationFrame(render); // 刷新
        }

        render();
    </script>
</body>
 
</html>

图片目录

在这里插入图片描述

动态效果

)请添加图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值