NEW: Так вот код на codepen: http://codepen.io/cmer41k/pen/pRJNww/ОБНОВЛЕНО: логика Javascript для исправления в небольшой функции (SVG, получение абсолютных COORDS)
В настоящее время функционирует UpdateCoords (перетаскиваемость) - закомментировано в коде ,
Я хотел бы обновить на mouseup событие координаты пути (круг как путь здесь) до абсолютных и удалить атрибут transform.
Но я не в состоянии сделать это; ((жаль только обучение
OLD:
В моем коде у меня есть SVG элемент (путь), который получает тащили вокруг корня SVG OBJ (SVG) через преобразование = «переводить (х, у)» свойство.
Я хотел обновить атрибут «D» такого пути элемента (строка, которая описывает все COORDS) использовать абсолютные координаты и избавиться от трансформируются \ переводить вещь.
В основном: : d = "M10,10 30,10 20,30" + transform = "translate (20,0); быть: d = "M30,10 50,10 40,30" + transform = "translate (0,0)" (или если мы можем удалить преобразование - еще лучше)
Так что я сделал код, который делает вещь для меня, но есть ошибка, которая мешает правильному результату.
Я уверен, что я делаю что-то неправильно здесь:
var v = Object.keys(path.controlPoints).length
// controlPoints здесь просто место в объекте пути, где я хранить COORDS на пути.
var matrix = path.transform.baseVal.consolidate();
// Я подтвердил, что приведенная выше строка дает мне правильную матрицу преобразования с соответствующими значениями x, y. Теперь ниже я пытаюсь перебрать и обновить все контрольные точки (координаты) на пути
for (i=0; i<v; i++) {
var position = svg.createSVGPoint();
position.x = path.controlPoints["p"+i].x;
position.y = path.controlPoints["p"+i].y;
// поэтому для каждого из управления траекторией в точках создать промежуточный svgpoint, которые могут усилить данные матрицы (или я так думаю) «превратить» старые коорды в новые.
position = position.matrixTransform(matrix);
path.controlPoints["p"+i].x = position.x;
path.controlPoints["p"+i].y = position.y;
}
// Я уверен, что я делаю что-то здесь не так, может быть, его, потому что я не «чистка»/сброс этой позиции вещь в этом цикле или чего-л?
Извините, что я не программист, просто изучаю материал, и вопрос в этом коде сокращен при условии, что я описал цель - что-то не так с тем, как я обрабатываю «позицию»?
Было бы проще всего для нас, чтобы помочь вам, если вы создали [mcve] и добавил, что на вопрос, а не просто дать нам несколько фрагментов кода здесь и там. –
Также вы сказали, что есть «что-то не так», но вы не говорите, что это такое. –
Хороший вопрос, я добавлю ссылку на codepen или что-то –