Я понимаю, что название может вводить в заблуждение, но не знало, как его формулировать любым другим способом.Определение значения, которое не изменяется
Проблема, с которой я сталкиваюсь, заключается в том, что я создаю панель SVG из объекта JSON, и в этом объекте есть движущиеся части, которые контролируются сервером, который отправляет нам значения. Я заставляю движущуюся часть находиться в правильном положении, но через некоторое время она постоянно добавляет X-позицию к себе настолько, что она выходит за границу, что ее не значит делать. В основном то, что он делает, это добавить X + X + X многократно из исходного положения, но я хочу, чтобы он сначала рассматривал исходное положение при вычислении новой позиции.
Вот эта функция, я попробовал иметь оператор if, который проверял переменную standardX и standardY, в то время как они были установлены как неопределенные, он установил obj.transform.baseVal.getItem (length) .matrix.e как значение для него, но это не сработало.
Любые советы по любому обходному решению? Спасибо заранее.
var moveX = function(elem, i) {
return function() {
var stepvalue = 6.25;
var step = "0";
var x1 = "0";
var y1 = "0";
var obj = elem.dyn[i].obj;
var standardX = obj.transform.baseVal.getItem(length).matrix.e;
var standardY = obj.transform.baseVal.getItem(length).matrix.f;
console.log(elem.value);
if (elem.value <= elem.dyn[i].rlow) {
step = 0;
x1 = standardY;
y1 = standardX;
obj.setAttribute("transform", "translate("+ x1 + "," + y1 +")");
} else if (elem.value > elem.dyn[i].rlow && elem.value <= elem.dyn[i].rhigh) {
step = stepvalue * elem.value;
x1 = step -25;
y1 = standardY;
x1 += standardX;
obj.setAttribute("transform", "translate("+ x1 + "," + y1 +")");
} else {
step = stepvalue * elem.dyn[i].rhigh;
x1 = step -25;
y1 = standardY;
x1 += standardX;
obj.setAttribute("transform", "translate("+ x1 + "," + y1 +")");
}
}};
Вы делаете x1 = step-25; И затем x1 + = standardX; Это означает, что ваш X1 продолжает расти ... IMO проблема исходит оттуда ... Вы должны привести пример: http://jsfiddle.net это было бы легче понять, что вы хотите, и помочь! – Julo0sS
Я никогда не использовал Fiddle, поэтому не уверен, знаю ли я, как его настроить, но я изменил код на x1 = (step -25) + standardX; Но он по-прежнему слишком сильно перемещается –
Скриншот довольно простой, просто вставьте код html (svg) в верхнюю левую часть (html), стиль css в верхнем правом углу (css) и javascript/jquery внизу слева. Затем нажмите save и ... magic ... – Julo0sS