【发布时间】:2020-02-18 21:23:08
【问题描述】:
我正在尝试制作一个模拟操纵杆控件的 Web 应用程序。我设法在点击时生成了 2 个圆圈。 (一个静止的作为边界,另一个跟随我的鼠标光标作为操纵杆)。现在我正试图弄清楚如何限制生成边界内的操纵杆运动。任何帮助将不胜感激。
<div class="eye"> </div>
<div class="ball">
</div>
</div>
<script>
var balls = document.getElementsByClassName("ball");
document.onmousemove = function () {
var x = event.clientX + "px";
var y = event.clientY + "px";
// event.clientX => gets the horizontal coordinate of the mouse
// event.clientY => gets the vertical coordinate of the mouse
// window.innerWidth => gets the browser width
// window.innerHeight => gets the browser height
for (var i = 0; i < 20; i++) {
balls[i].style.left = x;
balls[i].style.top = y;
balls[i].style.transform = "translate(x , y)"
}
【问题讨论】:
-
代码不完整。请修改您的问题...当您针对一个元素时,不要使用 getElementsByClassName ......在这种情况下就是这样。使用 document.querySelector("ball")
-
另外,你也应该在你的事件处理程序中使用一个参数——通常是一个名为 e 的变量,而不是关闭全局事件对象;不管怎样,它都可以工作。此外,循环仅在更新一堆球时似乎有用,但您不需要通过编辑样式来执行此操作,因为您可以直接访问属性,事实上,如果您使用画布执行此操作,可以导致倾斜问题。我试图提供帮助,所以我写了一个答案,但是,我感觉很有帮助,更多的代码和清晰度会帮助你从其他人那里得到更好的答案。
标签: javascript joystick