MXGraph — это библиотека JavaScript для создания приложений для построения диаграмм, которая предоставляет множество функций для создания и управления графическими объектами, включая прямые линии. Вот пример того, как вы можете использовать MXGraph для создания прямой линии при касании пальцем в качестве начала и отпускании в качестве конца:
Настройка контейнера MXGraph
Создайте элемент контейнера в своем HTML-коде и инициализируйте экземпляр класса mxGraph в своем коде JavaScript.
<div id="graphContainer"></div> var container = document.getElementById(“graphContainer”); var graph = new mxGraph(container);
Теперь вы можете настроить прослушиватель событий для событий touchstart и touchend в контейнере.
Когда срабатывает событие touchstart, вы можете создать новый объект mxCell для представления начала строки, а когда срабатывает событие touchend, вы можете создать новый объект mxCell для представления конца строки и соединить его с началом. клетка
var graph = new mxGraph(container); graph.setPanning(true); graph.setTooltips(false);
Реализуйте обработчики событий mouseup и mousedown для обновления геометрии линии на основе событий касания и отпускания пальца.
var edge = null;
var mouseListener =
{
mouseDown: function(sender, evt)
{
// Check if the event is on a cell or not
var cell = evt.getProperty('cell');
if (!cell)
{
// Create a new edge starting at the mouse's current location
edge = graph.insertEdge(parent, null, '', evt.getGraphX(), evt.getGraphY(), 0, 0);
}
},
mouseMove: function(sender, evt)
{
if (edge != null)
{
// Update the end point of the edge as the mouse moves
edge.geometry.setTerminalPoint(new mxPoint(evt.getGraphX(), evt.getGraphY()), false);
graph.getModel().endUpdate();
}
},
mouseUp: function(sender, evt)
{
if (edge != null)
{
// Finalize the edge by setting its end point and removing the mouse listener
edge.geometry.setTerminalPoint(new mxPoint(evt.getGraphX(), evt.getGraphY()), true);
edge = null;
mxEvent.removeMouseListener(mouseListener);
}
}
};
mxEvent.addListener(container, 'mousedown', mouseListener.mouseDown);
mxEvent.addListener(container, 'mousemove', mouseListener.mouseMove);
mxEvent.addListener(container, 'mouseup', mouseListener.mouseUp);
Вот окончательный код
Вам нужно будет добавить необходимые библиотеки для работы mxGraph, такие как файлы JavaScript mxGraph и библиотеку jQuery. Кроме того, замените идентификатор элемента контейнера HTML в приведенном выше коде фактическим идентификатором элемента контейнера.
// Initialize mxGraph instance
var container = document.getElementById('graphContainer');
var graph = new mxGraph(container);
graph.setPanning(true);
graph.setTooltips(false);
var model = graph.getModel();
var parent = graph.getDefaultParent();
// Create mouse listener
var edge = null;
var mouseListener =
{
mouseDown: function(sender, evt)
{
// Check if the event is on a cell or not
var cell = evt.getProperty('cell');
if (!cell)
{
// Create a new edge starting at the mouse's current location
edge = graph.insertEdge(parent, null, '', evt.getGraphX(), evt.getGraphY(), 0, 0);
}
},
mouseMove: function(sender, evt)
{
if (edge != null)
{
// Update the end point of the edge as the mouse moves
edge.geometry.setTerminalPoint(new mxPoint(evt.getGraphX(), evt.getGraphY()), false);
graph.getModel().endUpdate();
}
},
mouseUp: function(sender, evt)
{
if (edge != null)
{
// Finalize the edge by setting its end point and removing the mouse listener
edge.geometry.setTerminalPoint(new mxPoint(evt.getGraphX(), evt.getGraphY()), true);
edge = null;
mxEvent.removeMouseListener(mouseListener);
}
}
};
// Add mouse listener to container
mxEvent.addListener(container, 'mousedown', mouseListener.mouseDown);
mxEvent.addListener(container, 'mousemove', mouseListener.mouseMove);
mxEvent.addListener(container, 'mouseup', mouseListener.mouseUp);
mxEvent.addGestureListeners(container, function(evt)
{
// Prevent default gesture behavior (e.g. scrolling)
evt.preventDefault();
});