Показать сообщение отдельно
  #1 (permalink)  
Старый 28.09.2018, 19:35
Аспирант
Отправить личное сообщение для drakulawz Посмотреть профиль Найти все сообщения от drakulawz
 
Регистрация: 13.08.2018
Сообщений: 79

Почему рисуется только один прямоугольник циклом?
Здравствуйте!
Рисую прямоугольники циклом, должно выйти 3 ряда по 3, но получаю один.
Есть вот такой скрипт:

$(document).ready(function () {
    cnv = document.getElementById('canvas');
    ctx = cnv.getContext('2d');
    width = cnv.width;
    height = cnv.height;

    var fillAll = function (color) {
        ctx.fillStyle = '#ccc';
        ctx.fillRect(0, 0, width, height);
    };

    var strkRect = function (x, y, w, h, color) {
        ctx.strokeStyle = color;
        ctx.strokeWidth = 2;
        ctx.strokeRect(x, y, w, h);
    };

    var area = {
        x: 0,
        y: 0,
        width: 100,
        height: 100,
        color: 'white',

        draw: function () {
            strkRect(this.x, this.y, this.width, this.height, this.color);
        },

        init: function (x, y, w, h) {
            this.x = x;
            this.y = y;
            this.width = w;
            this.height = h;
        }
    };

    for (var a1 = 0; a1 < 3; a1++) {
        for (var a2 = 0; a2 < 3; a2++) {
            var dW = Math.ceil(width / 3),
                dY = Math.ceil(height / 3);
            area.init(dW * a1, dY * a2, dW, dY);
        }
    };

    setInterval(function () {
        fillAll();
        area.draw();
    }, 1000 / 60);
});


На странице я вижу только один прямоугольник в конце канваса, как будто бы отрисовало все и стёрло но оставило последний.
Подскажите, может я не правильно цикл применил или не так инициализировать надо? Только прошу, не нужно свои скрипты писать - если возможно. Я их потом не адаптирую, у меня 8 скриптов (файлов) связанных - не хватит мозгов на это. Буду благодарен если кто-нибудь объяснить как правильно делать или в чём ошибка, я уверен, что и сам скрипт смогу написать, по подсказке. Если уж нельзя без примера...

Последний раз редактировалось drakulawz, 28.09.2018 в 19:37.
Ответить с цитированием