我正在构建一个 HTML5游戏,我试图把鼠标光标放在特定事件的特定控件上,这样在特定方向移动总是有相同的结果。这可能吗?
不能用 javascript 移动鼠标指针。
如果可以的话,请稍微考虑一下其中的含义;)
您不能使用 javascript 移动鼠标指针,因此出于明显的安全原因。实现此效果的最佳方法是将控件实际放置在鼠标指针下。
我可以想象,如果您不使用真正的(系统)鼠标光标,您可以完成将鼠标光标放置到屏幕的给定区域。
例如,你可以创建一个图像来代替你的光标,处理一个事件,在检测到鼠标进入你的场景时,将系统光标的样式设置为“无”(sceneElement.style.cursor = 'none') ,然后将一个隐藏的图像元素作为一个光标,在场景中的任何你喜欢的地方,基于一个预定义的轴/边框转换。
sceneElement.style.cursor = 'none'
这样,无论你如何移动真正的光标,你的翻译方法将保持您的图像光标在任何地方,你需要它。
编辑: 在 jsFiddle 中使用图像表示和强制鼠标移动的示例
问得好。这确实是 Javascript 浏览器 API 所缺少的东西。我还在和我的团队一起开发一个 WebGL 游戏,我们需要这个特性。我在 Firefox 的 bugzilla 上打开了一个问题,这样我们就可以开始讨论有一个允许鼠标锁定的 API 的可能性。这对于所有的 HTML5/WebGL 游戏开发者来说都是非常有用的。
如果你愿意,可以过来留下你的反馈意见,并对这个问题进行评论:
Https://bugzilla.mozilla.org/show_bug.cgi?id=630979
谢谢!
通过一个简单的 http 调用、 AJAX 或者其他什么方式,以 CGI 脚本的形式运行它——使用你想要将鼠标移动到的坐标,例如:
http://localhost:9876/cgi/mousemover?x=200&y=450
PS: 对于任何问题,都有成百上千个理由来解释为什么要这么做,以及怎么做——不能,也不应该这么做。.但是在这个无限的宇宙中,这真的只是一个决心的问题——至于你是否会让它发生。
你可以检测鼠标指针的位置,然后移动网页(与正文位置相对) ,这样它们就会悬停在你想要它们点击的地方。
例如,您可以将此代码粘贴到浏览器控制台中的当前页面(然后刷新)
var upvote_position = $('#answer-12878316').position(); $('body').mousemove(function (event) { $(this).css({ position: 'relative', left: (event.pageX - upvote_position.left - 22) + 'px', top: (event.pageY - upvote_position.top - 35) + 'px' }); });
所以,我知道这是一个老话题,但我首先要说的是,这是不可能的。目前最接近的方法是将鼠标锁定到单个位置,并跟踪其 x 和 y 的变化。这个概念已经被——看起来像是—— Chrome 和 Firefox 采用了。它是由 鼠标锁控制的,击中逃逸就会破坏它。从我的 简短阅读,我认为这个想法是锁定鼠标到一个位置,并报告运动事件类似于点击和拖动事件。
下面是发布文档: < br/> FireFox: https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API < br/> Chrome: http://www.chromium.org/developers/design-documents/mouse-lock
这里有一个非常简洁的演示: http://media.tojicode.com/q3bsp/
你不能移动一只老鼠,但可以锁定它。 注意: 必须在 click 事件中调用 requestPointerLock。
小例子:
var canvas = document.getElementById('mycanvas'); canvas.requestPointerLock = canvas.requestPointerLock || canvas.mozRequestPointerLock || canvas.webkitRequestPointerLock; canvas.requestPointerLock();
文档和完整代码示例:
Https://developer.mozilla.org/en-us/docs/web/api/pointer_lock_api
这难道不能简单地通过得到鼠标指针的实际位置,然后计算和补偿基于这种补偿的精灵/场景鼠标动作来完成吗?
例如,您需要鼠标指针位于底部中心,但它位于左上方; 隐藏光标,使用移位的光标图像。移动光标移动并映射鼠标输入以匹配重新定位的光标精灵(或“控制”)单击当/如果边界被击中,重新计算。如果/当光标实际到达你想要的点时,删除补偿。
免责声明,我不是游戏开发者。
有意思。由于之前提到的原因(垃圾邮件点击和恶意软件注入) ,这不可能直接实现,但是考虑一下这个黑客行为,它创造了一个相同的印象:
假设您有一个 div,您可以使用 css 属性来隐藏真正的光标:
.your_div { cursor: none }
只需要创建一个类似光标的图像,并将其放在网页中,使用 position:absolute。
position:absolute
这很容易。检查互联网上如何得到真正的鼠标位置(X & Y 坐标)。
当实际光标移动时,按照相同的 X 和 Y 差移动您的伪光标。同样地,你也可以使用 javascript 魔法在网页上的任何位置生成一个单击事件(只需在互联网上搜索 how-to)。
现在,您可以按照自己希望的方式控制伪光标,您的用户将得到真正的光标在移动的印象。
公平警告: 不要这样做。没有人希望他们的光标或计算机以这种方式控制,除非您有一些特定的用例,或者如果您决心逃离您的用户。