【问题标题】:Fixed mouse pointer with jQuery draggable使用 jQuery 可拖动的固定鼠标指针
【发布时间】:2010-05-04 01:44:40
【问题描述】:

我正在用 HTML5 构建一个小游戏。画布元素是进入游戏世界的一个视口。用户可以通过在小图标上单击并拖动鼠标来移动视口在世界中的位置。

问题是当鼠标指针碰到屏幕边缘时滚动停止。这很可能会严重限制向其中一个方向的滚动,因为图标将位于页面的某个角落。

我能想到的唯一技术解决方案是以某种方式固定鼠标指针在图标上的位置并检测每一帧的相对移动。基本上我只会在每次拖动事件后将指针位置重置回图标的中心。不幸的是,我相当肯定这是不可能的。从可用性和安全性的角度来看,使用用户指针是一个很大的禁忌。

那么,有没有其他方法可以做我想做的事?我主要在这里寻找技术想法,但也欢迎提出更合适的界面建议。

【问题讨论】:

    标签: javascript jquery html mousemove


    【解决方案1】:

    三种可能的解决方案:

    1. 将这个“操纵杆”图标从角落移开 100 像素。给它不透明度,直到它悬停。让单击和拖动动作“持续”,以便在距离操纵杆中心 40 像素的地方单击并按住光标会导致连续的屏幕平移。

    2. 使用箭头,类似于Google Maps。 (您也可以通过将抓手部分更改为“操纵杆”部分将其与第一个解决方案结合使用。)

    3. 做一些完全不同的事情。例如,当光标靠近四个边缘中的任何一个时,让屏幕平移。

    【讨论】:

    • 我最喜欢选项 3。当您靠近边缘时,滚动速度可能会增加。当用户将指针移动到另一个应用程序时,我可能希望将它与鼠标单击结合起来以防止疯狂滚动。选项 1 会使视口的中心有点混乱,选项 2 可能会失去“游戏”的感觉,尽管两者都可以。
    • 我刚刚重新阅读了您的答案,选项 1 似乎比我最初想象的要好得多。我显然忽略了整个“在单击、拖动和按住时保持滚动”的想法。我昨晚实施了选项 3,效果很好,但我今晚可能只尝试 #1 并比较两者。
    • 酷。不知道为什么我之前没有提到它,但 Bing Maps (bing.com/maps) 实际上是 1 和 2 的组合。(它的 1 的实现非常巧妙。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-26
    • 2011-03-25
    • 1970-01-01
    • 1970-01-01
    • 2021-02-13
    • 1970-01-01
    相关资源
    最近更新 更多