Анимация бесконечной прокрутки фона на холсте - PullRequest
0 голосов
/ 29 апреля 2020

Я пытался воссоздать фон прокрутки этого сайта, который "замаскирован", чтобы показывать только цифры 1.1.1.1.

Я понимаю, что они применяют XOR globalCompositeOperation на холсте, который содержит 2 изображения (фон и маска 1.1.1.1). Однако я немного не уверен в том, как им удалось заставить фон бесконечно прокручиваться.

Я бы предположил, что он находится под функцией requestAnimationFrame(), но я не уверен в том, что он делает.

В настоящее время холст отлично рендерится, просто застрял на анимации:

import React, {Component} from 'react';
import logo from "../../../src/dummy1.png"
import maskImage from "../../../src/mask500.png"
import './CanvasLogo.css'

export class CanvasLogo extends Component{

    state = {
        image: null,
    }

    constructor(props) {
        super(props);
        this.canvasRef = React.createRef();
        this.imageRef = React.createRef();
        this.imageMaskRef = React.createRef();
    }
    componentDidMount() {
        this.loadImage()
    }

    loadImage() {
        let ctx = this.canvasRef.current.getContext('2d');
        const img = new Image();
        const maskImg = new Image();
        img.src = logo
        maskImg.src = maskImage
        img.onload = () => {
            ctx.globalCompositeOperation = "xor"
            ctx.drawImage(img, 0, 0);
            ctx.drawImage(maskImg, 0, 0);

        }

    }

    render() {
        return (
            <div className="canvasLogo">
                <div>Canvas</div>
                <canvas ref={this.canvasRef} className="landing" width={500} height={500} />
                <img ref={this.imageRef} src={logo} id="dummy" className="hidden" alt=""/>
                <img ref={this.imageMaskRef} src={maskImage} className="hidden" alt=""/>
            </div>
        )
    }
}

export default CanvasLogo;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...