@progerstas

Почему код не рисует на холсте?

Код должен рисовать на холсте круг, но этого не происходит, холст только заливается черным.

function drawBox(position, width, height, angle) {
    console.log(position, width, height, angle, FRAME)
    let angleInRadians = (angle * Math.PI) / 180
    FRAME.save()
    FRAME.strokeStyle = '#fff'
    FRAME.translate(position.x, position.y)
    FRAME.rotate(angleInRadians)
    FRAME.fillStyle = '#000'
    FRAME.fillRect(-width / 2, -height / 2, width, height)
    FRAME.restore()
}


function setup() {
    body = new RigidBody()
    body.initBoxBody(100, 100, new Vector(100, 100), false, 1)
    ENTITIES.push({RigidBody: body})
}


function DrawingSystem() {
        for (let entity of ENTITIES) {
        if (!('RigidBody' in entity)) continue
        let body = entity.RigidBody
        // circle
        if (body.shapeType == 0) {
            drawCircle(body.position, body.radius)
        }
        // box
        if (body.shapeType == 1) {
            drawBox(body.position, body.width, body.height, body.rotation)
        }
    }
}


В консоль выводится вектор позиции, радиус и canvas, поэтому все аргументы и canvas заданы правильно. Размеры холста 1920*1080, их тоже выводил в консоль, все выводится правильно.
  • Вопрос задан
  • 244 просмотра
Пригласить эксперта
Ответы на вопрос 1
@mtrll
function drawCircle(position, radius) {
    FRAME.save();
    FRAME.fillStyle = '#fff'; // Установка цвета заливки круга
    FRAME.beginPath(); // Начало нового пути
    FRAME.arc(position.x, position.y, radius, 0, 2 * Math.PI); // Рисование окружности
    FRAME.fill(); // Заливка круга
    FRAME.restore(); // Восстановление предыдущего состояния контекста холста
}

Должно работать
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы