【问题标题】:JS - Need to get raw mouse input (or close to it)JS - 需要获取原始鼠标输入(或接近它)
【发布时间】:2014-01-04 03:46:51
【问题描述】:

我正在编写一个 HTML5 游戏,我希望用户能够通过左右移动鼠标来控制角色的方向。

我可以使用 onmousemove 和 pageX 和 pageY 来移动鼠标,但是一旦鼠标碰到屏幕边缘……对你来说太糟糕了。 是否有任何跨浏览器的解决方法(也许获得实际的鼠标移动而不是光标位置)?

如果不是,我可以将鼠标光标设置在元素的中间,如果它到达边缘,并且只允许他们将鼠标垂直移出元素吗?

【问题讨论】:

  • Is there any cross-browser way around this 不。 can I set the mouse cursor to be in the middle of an element if it reaches the edge你能想象一下横幅和“坏”网站可以处理你的所有请求吗? :))

标签: javascript html mouse


【解决方案1】:

使用指针锁定 API。

http://www.html5rocks.com/en/tutorials/pointerlock/intro/

https://developer.mozilla.org/en-US/docs/WebAPI/Pointer_Lock

这是“实验性的”。

浏览器会询问用户是否允许锁定光标。

【讨论】:

    【解决方案2】:

    不,据我所知,没有任何方法可以做到这一点,但可能有一种方法可以获得相同的效果。

    当光标开始向左(或向右)移动时,您将记录它。当光标碰到屏幕边缘时,它可能会开始向上或向下移动(因为没有人移动他们的手足够稳定以跟随 1 像素的直线)。您将此向上和向下移动解释为沿相同方向(在本例中为左侧)的移动,直到检测到向右方向的移动。

    如果光标在开始时向右移动,则将上下记录为向右移动,直到检测到向左方向。

    【讨论】:

    • "你把这个...解释为同方向的运动"聪明,但你没有关于运动速度的信息——它可能是每秒英寸,或者十个...... :(跨度>
    【解决方案3】:

    这是不可能的,除非您将页面包含在目标平台的本机应用程序中,或者您为游戏请求页面全屏,现代浏览器支持。

    https://developer.mozilla.org/en/DOM/Using_full-screen_mode

    http://hacks.mozilla.org/2012/01/using-the-fullscreen-api-in-web-browsers/

    请记住以下几点:

    • 为安全起见,网页无法检测到浏览器视口之外的光标。
    • 无法通过网页控制系统级设备(例如:无法控制鼠标)

    *不过,这可能通过 flash 实现,但不确定。

    【讨论】:

    • 现在是 2018 年 - 这个答案已经过时,因此现在是错误的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多