Второй HTML-холст не рендеринг - PullRequest
0 голосов
/ 01 марта 2019

Я сейчас следую учебному пособию, в котором вы работаете с canvas, и парень по обучению рисует на холсте каждый раз, когда я хочу сохранить каждый учебник на одной странице, следовательно, получаю холст с кодом изодин эпизод, под ним другой холст с кодом для 2-го урока.Вот оно:

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Page Title</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" type="text/css" media="screen" href="style.css">
    <script src="main.js"></script>
</head>

<body>
    <div>
        <canvas id="canvas"></canvas>
    </div>
    <div>
        <canvas id="canvas2"></canvas>
    </div>
</body>

</html>



window.onload = function () {
    /** @type {CanvasRenderingContext2D} */
    var canvas = document.getElementById("canvas");
    var context = canvas.getContext("2d");
    var width = canvas.width = window.innerWidth / 2;
    var height = canvas.height = window.innerHeight / 2;

    context.fillRect(0, 0, width, height);


    for (var index = 0; index < 100; index++) {
        context.beginPath();
        context.moveTo(Math.random() * width, Math.random() * height);
        context.lineTo(Math.random() * width, Math.random() * height);
        context.strokeStyle = "#FFFF00";
        context.stroke();
    }

    var canvas2 = document.getElementById("canvas2");
    var context2 = canvas2.getContext("2d");
    var width2 = canvas2.width = window.innerWidth / 2;
    var height2 = canvas2.height = window.innerHeight / 2;
    context2.translate(window.innerWidth, window.innerHeight)
    context2.fillRect(0, 0, width, height);
    for (var angle = 0; angle < Math.PI * 2; angle += .01) {
        console.log(Math.sin(angle));
        var x = angle * 200;
        var y = Math.sin(angle) * 200;
        context2.fillStyle = "green"
        context2.fillRect(x, y, 5, 5)
    }
}

На первом холсте я рисую случайные линии, на втором холсте должна отображаться синусоида (сделанная маленькими прямоугольниками), но она не отображается, пока у меня нет ошибоки значения верны, когда я их консоль регистрирую.Я не могу найти ответ в MDN, а не в W3

1 Ответ

0 голосов
/ 01 марта 2019

Вы переводите 2-й холст, из-за которого все последующие рисунки отображаются вне координат холста.Удалите перевод и все должно быть в порядке.

PS Вы очищаете второй холст с размерами первого, что может вызвать проблемы.Как правило, присвоение имен переменным width1 приводит к ошибкам.Переименуйте их / перейдите к функции, чтобы избежать таких ошибок в будущем.

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