Canvas 旋转动画(rotate())


demo.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        canvas {
            border:1px solid red;
        }
    </style>
</head>
<body>
    <canvas id="cvs" width="500" height="500"></canvas>
    <script>
        var cvs = document.getElementById('cvs');
        var ctx = cvs.getContext('2d');

        // 在100,100点绘制一个宽50,高50的旋转矩形。
        /*var baseRadian = 0;
        setInterval( function() {

            // 防止图形飞走,所以先把当前坐标轴的状态保存起来
            ctx.save();

            // 清除上一次的矩形
            ctx.clearRect( 0, 0, cvs.width, cvs.height );

            // 平移到矩形的中心
            ctx.translate( 125, 125 );

            // 旋转坐标系
            ctx.rotate( baseRadian += Math.PI / 180 * 4 );

            // 绘制图形
            ctx.fillRect( -25, -25, 50, 50 );

            // 平移旋转之后,回滚到最初的坐标轴状态
            ctx.restore();

        }, 50 );*/


        /*----------------------------做法2--------------------------------*/

        // 先统一平移到矩形的中心
        ctx.translate( 125, 125 );

        // 基于这个中心不断绘制旋转矩形
        setInterval( function() {

            // 清除上一次的矩形
            ctx.clearRect( -50, -50, cvs.width, cvs.height );

            // 旋转坐标系
            ctx.rotate( Math.PI / 180 * 4 );  //旋转叠加(在之前旋转的基础上再旋转)

            // 绘制图形
            ctx.fillRect( -25, -25, 50, 50 );

        }, 50 );
    </script>
</body>
</html>


阅读更多
换一批

没有更多推荐了,返回首页