калибровка.js, настройте ванильный JS-код для настраиваемых меток.

  • Автор темы Luckyeh
  • 27
  • Обновлено
  • 12, May 2024
  • #1
Привет, Я снова вернулся к часам, датчикам и т. д. Я обнаружил инструмент JS под названием Gauge.js.
https://bernii.github.io/gauge.js/

В качестве упражнения я хотел сделать датчик оборотов в минуту (оборотов в минуту).

Я могу построить датчик с помощью этого инструмента, а также разместить тики с помощью этого инструмента.

Теперь добавление меток усложняется, посколькукалибровка.js не предоставляет здесь гибкого метода.

Поскольку код не слишком длинный (Game.js), я подумал, что смогу настроить это самостоятельно.

статические метки это объект, который имеет следующие свойства: шрифт, метки, цвет, дробные цифры. Gauge.js отображает метки с помощью приведенного ниже кода. Как мне подойти к этому методу, чтобы понять, как он работает, и сделать функциональность более гибкой?

НАПРИМЕР. Почему метод начинается с M.prototype.renderStaticLabels?? Бесконечно благодарен!
  (M.prototype.renderStaticLabels = function (t, i, e, s) {

var n, o, a, h, r, l, p, c, u, d;

for (

this.ctx.save(),

this.ctx.translate(i, e),

l = /\d+\.?\d?/,

r = (n = t.font || "10px Times").match(l)[0],

c = n.slice(r.length),

o = parseFloat(r) * this.displayScale,

this.ctx.font = o + c,

this.ctx.fillStyle = t.color || "#000000",

this.ctx.textBaseline = "bottom",

this.ctx.textAlign = "center",

a = 0,

h = (p = t.labels).length;

a < h;

a++

)

void 0 !== (d = p[a]).label

? (!this.options.limitMin || d >= this.minValue) &&

(!this.options.limitMax || d <= this.maxValue) &&

((r = (n = d.font || t.font).match(l)[0]),

(c = n.slice(r.length)),

(o = parseFloat(r) * this.displayScale),

(this.ctx.font = o + c),

(u = this.getAngle(d.label) - (3 * Math.PI) / 2),

this.ctx.rotate(u),

this.ctx.fillText(

g(d.label, t.fractionDigits),

0,

-s - this.lineWidth / 2

),

this.ctx.rotate(-u))

: (!this.options.limitMin || d >= this.minValue) &&

(!this.options.limitMax || d <= this.maxValue) &&

((u = this.getAngle(d) - (3 * Math.PI) / 2),

this.ctx.rotate(u),

this.ctx.fillText(

g(d, t.fractionDigits),

0,

-s - this.lineWidth / 2

),

this.ctx.rotate(-u));

return this.ctx.restore();

}),
Код (JavaScript):

Luckyeh


Рег
25 Feb, 2014

Тем
1

Постов
2

Баллов
12
Тем
49554
Комментарии
57426
Опыт
552966

Интересно