Показать сообщение отдельно
  #8 (permalink)  
Старый 12.08.2018, 21:04
Интересующийся
Отправить личное сообщение для Arhitector Посмотреть профиль Найти все сообщения от Arhitector
 
Регистрация: 12.08.2018
Сообщений: 18

Сообщение от Malleys Посмотреть сообщение
Проверьте real_pos.x, real_pos.y и r.
Они должны быть числами(но не NaN или Infinite) и не строками.

Возможно перед вызовом createRadialGradient можно проверить?
if(!Number.isFinite(real_pos.x)) console.log("invalid real_pos.x");
if(!Number.isFinite(real_pos.y)) console.log("invalid real_pos.y");
if(!Number.isFinite(r)) console.log("invalid r");
Жаль на этом форуме нет кнопки "сто тысяч благодарностей"... вы ёё заслужили...
И правда, совсем уже видимо замотался с этим делом, голова у меня не варит, переменные то проверить забыл, всё сразу встало на места.

Я уже даже такую штуку написать успел... брр

var r = character.getRadiusLight(),
  pos = character.getCoordinates(),
  normalDrawBG = function(object) {
    var r = object.r, x = object.x, y = object.y,
    bend = Math.round(object.r / Math.PI);

    ctx.fillStyle = "rgba(0,0,0,0.85)";
    ctx.moveTo(x - r, y); 
    ctx.bezierCurveTo(x - r, (y - r) - bend, x + r, (y - r) - bend, x + r, y);
    ctx.bezierCurveTo(x + r, y + r + bend, x - r, y + r + bend, x - r, y);
};

ctx.beginPath();

normalDrawBG({x: pos.x, y: pos.y, r: r});

ctx.moveTo(0, 0); 
ctx.lineTo(0, canvas.height); 
ctx.lineTo(canvas.width, canvas.height); 
ctx.lineTo(canvas.width, 0); 
ctx.closePath();
ctx.fill();
Ответить с цитированием