Skip to content

动画

canvas实现动画的方式:重绘。

实现动画的基本步骤:

1.清空cavas

2.保存cavas状态

3.绘制动画图形

3.恢复canvas状态

通过setInterval 实现一个平移动画:

typescript
window.addEventListener("DOMContentLoaded", () => {
    const el = document.querySelector<HTMLCanvasElement>("canvas")!;
    const canvas = el.getContext("2d")!;

    let x = 0;
    const STEP = 5;
    const MAX = 600;

    const draw = () => {
        x += STEP
        if (x >= MAX) return;
        canvas.clearRect(0, 0, 1000, 800);
        canvas.beginPath()
        canvas.fillStyle = "#8e44ad";
        canvas.fillRect(x, 0, 200, 100);
        requestAnimationFrame(draw)
    }
    draw()
})

色块跟随鼠标垫示例:

typescript
const el = document.querySelector<HTMLCanvasElement>("canvas")!;
const canvas = el.getContext("2d")!;

const draw = (canvas: CanvasRenderingContext2D, x: number,y:number) => {
    canvas.clearRect(0, 0, 1000, 800);
    canvas.beginPath()
    canvas.fillStyle = "#8e44ad";
    canvas.fillRect(x, y, 200, 100);
}

window.addEventListener("DOMContentLoaded",() => {
    const mouseCallback = (e:MouseEvent) => {
        const X = e.offsetX;
        const Y = e.offsetY;
        draw(canvas,X,Y)
    }
    el.addEventListener("mousemove",mouseCallback.bind(el))
    el.addEventListener("mouseleave",() => el.removeEventListener("mousemove",mouseCallback))
})