【问题标题】:Draggable divs leaving a line trail when dragged, possible?可拖动的 div 在拖动时会留下一条线,可能吗?
【发布时间】:2013-12-25 21:50:00
【问题描述】:

我目前正在尝试制作一种在线教练战术板,您可以在其中拖着 div 冒充球员来展示阵容或特定战术。 我使用Touch Punch 进行拖动,它在个人电脑、平板电脑和智能手机(最后两个是目标平台)上运行良好。

我现在想尝试和实现的是,当您按下按钮时,在玩家拖动后开始在轨迹中绘制线条,因此特定玩家应该如何运行的模式。 这意味着您将首先将玩家置于起始位置,然后使用按钮开始线路轨迹,然后开始在运行模式中拖动他们以显示。

我目前在<canvas> 中完成了线条的绘制,但这意味着您将线条与拖动玩家分开,这有时会变得拥挤,并且很容易开始拖动 div 而不是从下一个开始绘制线条到 div,尤其是在触摸屏上。

有人知道这是否可能吗?

【问题讨论】:

  • 将拖动与绘画结合起来。使用拖动的 div 的 topleft 值在画布上绘制。
  • 问题是 div 覆盖在画布上以便能够在其上拖动,这意味着画布在指向 div 时似乎没有注册光标。如果我现在画线,并将它画在一个 div 上,它会停止在那里画线。
  • 不要使用光标。使用 div 位置
  • 啊,聪明。我会看看我能不能让它工作。
  • @raam86 谢谢raam86,没想到会这么简单。

标签: javascript jquery html jquery-ui jquery-ui-touch-punch


【解决方案1】:

谢谢raam86,没想到会这么简单。

如果有人沿着这条路走,我就是这样解决的:

$( "[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();
            }
        }
    });

【讨论】:

  • 不错的一个。很高兴我能帮忙
  • 请加个小提琴
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-16
  • 2012-03-09
  • 2017-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多