2013-02-21 3 views
1

В настоящее время я пытаюсь создать draggable поведение в своем сценарии d3. Я учусь пример Майк Босток здесь: http://bl.ocks.org/mbostock/1557377Объяснение функции d3.js dragmove Майка Бостока

Это функция вопрос:

function dragmove(d) { 
    d3.select(this) 
     .attr("cx", d.x = Math.max(radius, Math.min(width - radius, d3.event.x))) 
     .attr("cy", d.y = Math.max(radius, Math.min(height - radius, d3.event.y))); 
} 

Это кажется очень запутанной.

  • Почему этот Math.max, а затем используется функция Math.min?

ответ

2

Он используется для ограничения диапазона перетаскивания каждого круга.

х ограничивается диапазоном [radius, width-radius]

у в настоящее время ограничено диапазоном [radius, height-radius]

Это все внутри соответствующим образом преобразованного элемента SVG g так, что х и у по отношению к каждой ячейке. Следовательно, при перетаскивании края окружностей пересекают границу ячейки.

Смежные вопросы