Сообщение от 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();