Canvs循环滚动图像

本文将介绍使用canvas绘图API进行循环滚动图像。

技术要点:
1.动态局部裁切图像
2.图像首位拼接

完整代码

<!DOCTYPE html>
<html>

<head>
    <title>循环滚动图片,loop scroll image</title>
</head>

<body>
    <canvas id="canvas" width="800" height="600"></canvas>
    <script>
        var img = new Image();
        //此处用到的图片是1920x1080尺寸的
        img.src = "img.jpg";
        img.onload = function() {
            drawImage();
            setInterval(function() {
                frame++;
                if (frame > 192) {
                    frame = 0;
                }
            }, 50);
        }
        var canvas = document.getElementById('canvas');
        var context = canvas.getContext('2d');
        //横向帧计数,horizontal frame count
        var frame = 0;
        var animeid = 0;
        //图像缩放比例,image scale rate
        var rate_w = 600 / 1080;

        function drawImage() {
            context.clearRect(0, 0, context.canvas.clientWidth, context.canvas.clientHeight);
            //每帧绘制原图像120*1080的区域
            context.drawImage(img, frame * 10, 0, 120, 1080, 400, 0, 120 * rate_w, 600);
            //图像即将滚动到尾部时,开始绘制图像的头部
            if (frame >= 180) {
                var cw = (192 - frame) * 10;
                context.drawImage(img, 0, 0, 120 - cw, 1080, 400 + cw * rate_w, 0, (120 - cw) * rate_w, 600);
            }
            animeid = requestAnimationFrame(drawImage);
        }
    </script>
</body>

</html>

效果演示页面

参考资料
drawImage参数说明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值