У меня есть выбор circle
в D3, радиус которого я хотел бы увеличить с шагом 1, начиная с события dragstart
и заканчивая событием dragend
. Например, если сопротивление активно в течение 100 мс, я хотел бы увеличить радиус на 1 пиксель, и если он будет активен в течение 400 мс, я хотел бы увеличить радиус на 4 пикселя.Увеличьте радиус круга при перетаскивании до тех пор, пока не будет запущено событие (D3js)
Это может быть чисто JavaScript-вопрос, но я хотел бы узнать все лучшие методы D3 в этом процессе.
Вот мой JS/D3:
function increaseHoleRadius() {
// Increase radius of hole until dragend() runs
// e.g. -> hole.attr('r', count++)
}
function dragstart() {
// begin increasing radius of "hole" selection
increaseHoleRadius();
}
function dragmove() {
// drag circle element
var m = d3.mouse(this);
currentX = m[0];
currentY = m[1];
circle.attr({
cx: m[0],
cy: m[1]
});
}
function dragend() {
// set hole selection back to initial radius
hole.attr({
r: 20
});
}
Вот working codepen. Обратите внимание, что в этом примере радиус hole
только увеличивается , а элемент перетаскивается. Я хочу, чтобы радиус постоянно увеличивался, пока не закончилось событие перетаскивания.
Похоже, он работает; Что за вопрос? Как вы хотите, чтобы ваше решение отличалось от рабочего примера? –
Отверстие только увеличивается в размере *, в то время как элемент круга перетаскивается *, я бы хотел, чтобы он постоянно увеличивался до того, как выталкивание будет выпущено. – Himmel
А, ладно, это имеет смысл. Вы почти должны использовать setTimeout для чего-то подобного. –