Pregunta

I'm currently trying to make a sort of online coach tactic board where you drag around divs posing as players to show a lineup or a specific tactic. I'm using Touch Punch for the dragging and it works well, on PCs, tablets and smarthpones (the two last ones being the target platforms).

What i would like to try and implement now is when you press a button lines start to be drawn in the trail after the players when dragged, so a pattern of how a specific player should run. Meaning you would first place players in starting positions, then start the line trail with a button, then start dragging them around in the running patterns so that is shown.

I currently have drawing of lines done in a <canvas>, but it means you drag the lines separate of dragging the players, which sometimes gets crowded and its easy to start dragging a div instead of starting to draw a line starting next to a div, especially on a touchscreen.

Anyone have any idea if this would be possible?

¿Fue útil?

Solución

Thank you raam86, never imagined it would have been this simple.

This is how i solved it in case someone comes down this road:

$( "[id^=home]" ).draggable({
        // options...
        start: function(event,ui){
            context.strokeStyle = 'Blue';
            $( this ).addClass("dragging");
            if (drawWhenDragging){
                context.beginPath();
                context.moveTo(ui.position.left+$(this).width()/2, ui.position.top+$(this).width()/2);
            }
        },
        drag: function(event,ui){
            $( this ).addClass("dragging");
            if (drawWhenDragging){
                context.lineTo(ui.position.left+$(this).width()/2, ui.position.top+$(this).width()/2);
                context.stroke();
            }
        },
        stop: function(event,ui){
            $( this ).removeClass("dragging");
            if (drawWhenDragging){
                context.closePath();
            }
        }
    });
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top