js实现小球在页面规定的区域运动

yizhihongxing

实现小球在页面规定的区域运动,需要用到JavaScript语言实现动态效果。

具体的步骤和示例说明如下:

  1. 首先,需要在html代码中添加一个用于显示小球的div标签,类似如下代码:
<div id="ball" style="position:absolute; width:20px; height:20px; border-radius:50%; background-color:red;"></div>
  1. 接着,在JavaScript代码中定义小球的运动范围和速度参数,例如左上角坐标(0,0),右下角坐标(600,400),以及速度分量vx和vy。代码示例如下:
var leftBound = 0, rightBound = 600, topBound = 0, bottomBound = 400;
var ball = document.getElementById('ball');
var vx = 5, vy = 2;
  1. 然后,编写一个函数来控制小球的运动轨迹,函数中需要判断小球是否碰到边界,如果碰到边界则改变相应的速度分量取反。代码示例如下:
function moveBall() {
    var x = parseInt(ball.style.left);
    var y = parseInt(ball.style.top);
    if (x + vx > rightBound || x + vx < leftBound) {
        vx = -vx;
    }
    if (y + vy > bottomBound || y + vy < topBound) {
        vy = -vy;
    }
    x += vx;
    y += vy;
    ball.style.left = x + "px";
    ball.style.top = y + "px";
}
  1. 最后,使用setInterval函数来周期性地调用moveBall函数,实现小球的运动效果。代码示例如下:
setInterval(moveBall, 30);

示例1:实现小球随机运动

<!DOCTYPE html>
<html>
<head>
    <title>小球随机运动</title>
    <meta charset="utf-8">
    <style type="text/css">
        #ball {
            position: absolute;
            width: 20px;
            height: 20px;
            border-radius: 50%;
            background-color: red;
        }
    </style>
</head>
<body>
    <div id="ball"></div>
    <script type="text/javascript">
        var leftBound = 0, rightBound = 600, topBound = 0, bottomBound = 400;
        var ball = document.getElementById('ball');
        var vx = getRandomNumber(-10, 10), vy = getRandomNumber(-10, 10);

        function moveBall() {
            var x = parseInt(ball.style.left);
            var y = parseInt(ball.style.top);
            if (x + vx > rightBound || x + vx < leftBound) {
                vx = -vx;
            }
            if (y + vy > bottomBound || y + vy < topBound) {
                vy = -vy;
            }
            x += vx;
            y += vy;
            ball.style.left = x + "px";
            ball.style.top = y + "px";
        }

        function getRandomNumber(min, max) {
            return Math.floor(Math.random() * (max - min + 1) + min);
        }

        setInterval(moveBall, 30);
    </script>
</body>
</html>

示例2:实现多个小球同时运动

<!DOCTYPE html>
<html>
<head>
    <title>多个小球同时运动</title>
    <meta charset="utf-8">
    <style type="text/css">
        .ball {
            position: absolute;
            width: 20px;
            height: 20px;
            border-radius: 50%;
            background-color: red;
        }
    </style>
</head>
<body>
    <div class="ball"></div>
    <div class="ball"></div>
    <div class="ball"></div>
    <div class="ball"></div>
    <div class="ball"></div>
    <script type="text/javascript">
        var leftBound = 0, rightBound = 600, topBound = 0, bottomBound = 400;
        var balls = document.getElementsByClassName('ball');

        for (var i = 0; i < balls.length; i++) {
            initBall(balls[i]);
        }

        function initBall(ball) {
            ball.style.left = getRandomNumber(leftBound, rightBound - parseInt(ball.style.width)) + "px";
            ball.style.top = getRandomNumber(topBound, bottomBound - parseInt(ball.style.height)) + "px";
            ball.vx = getRandomNumber(-10, 10);
            ball.vy = getRandomNumber(-10, 10);
        }

        function moveBall() {
            for (var i = 0; i < balls.length; i++) {
                var ball = balls[i];
                var x = parseInt(ball.style.left);
                var y = parseInt(ball.style.top);
                if (x + ball.vx > rightBound || x + ball.vx < leftBound) {
                    ball.vx = -ball.vx;
                }
                if (y + ball.vy > bottomBound || y + ball.vy < topBound) {
                    ball.vy = -ball.vy;
                }
                x += ball.vx;
                y += ball.vy;
                ball.style.left = x + "px";
                ball.style.top = y + "px";
            }
        }

        function getRandomNumber(min, max) {
            return Math.floor(Math.random() * (max - min + 1) + min);
        }

        setInterval(moveBall, 30);
    </script>
</body>
</html>

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js实现小球在页面规定的区域运动 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • 如何实现chrome浏览器关闭页面时弹出“确定要离开此面吗?”

    要实现chrome浏览器关闭页面时弹出“确定要离开此页面吗?”,可以通过 JavaScript 中的 beforeunload 事件来实现。 具体步骤如下: 1. 在 HTML 文件中添加代码 在需要弹出确认窗口的页面中,添加以下代码: <script> window.addEventListener(‘beforeunload’, functi…

    JavaScript 2023年6月10日
    00
  • JavaScript实现简单的时钟实例代码

    下面是实现简单的时钟实例代码的攻略: 步骤一:HTML结构 首先,在HTML中创建一个包含时钟的容器,并为时、分、秒分别添加class属性,代码如下: <div class="clock"> <span class="hour"></span> <span class=&quo…

    JavaScript 2023年5月27日
    00
  • js正则表达式之exec方法讲解

    下面是关于“js正则表达式之exec方法讲解”的完整攻略。 exec方法介绍 正则表达式是一个非常重要的知识点,使用正则表达式可以进行文本匹配和替换,exec() 是Regexp对象的一个方法,用于在字符串中执行正则表达式的搜索,并返回包含结果的数组。如果没有找到匹配,它将返回 null。 该方法的语法如下所示: regexp.exec(str) 其中 re…

    JavaScript 2023年6月10日
    00
  • JavaScript在IE中“意外地调用了方法或属性访问”

    当在IE浏览器中运行Javascript代码时,可能会出现“意外调用方法或属性访问”的问题。这个问题的主要原因是在IE中,当我们访问未定义的JavaScript变量时,会默认将其添加到全局作用域中,这可能会导致一些意料之外的影响。 例如,下面的代码中使用了一个未定义的变量test,这时在IE中,会自动将该变量添加到全局作用域中,可能会与其他已定义的变量发生冲…

    JavaScript 2023年5月28日
    00
  • JavaScript中清空数组的三种方式

    当我们需要清空 JavaScript 数组中所有的元素时,有三种方式可以实现。 方法一: 在遍历数组时删除数组中的元素,直到所有元素删除完毕。实际上,我们并非真正地清空了数组,而是删除了数组中的所有元素。这种方法的好处在于可以对数组上的每个元素进行操作。下面的示例演示如何使用此方法: let myArray = [‘apple’, ‘banana’, ‘pe…

    JavaScript 2023年5月27日
    00
  • js常用方法示例梳理(总结篇)

    JS常用方法示例梳理是一篇总结JS中常用方法的文章,在其中作者按照方法的特点进行了分类,并给出了对应的方法示例,以帮助读者快速掌握JS中常用方法的应用。 本篇文章将详细讲解每一个分类下的常用方法,以及这些方法的使用场景和示例。 字符串相关方法 在这一部分中,文章总结了一系列字符串相关的方法,包括字符串查找、替换、分割等。 查找方法:indexOf、lastI…

    JavaScript 2023年5月27日
    00
  • js 对象是否存在判断

    判断 JavaScript 对象是否存在是Web开发中经常使用到的操作之一。以下是几种常见的判断 JavaScript 对象是否存在的方法。 方法一:使用typeof关键字 使用 typeof 关键字可以判断一个变量是否存在。当变量存在时,typeof 关键字返回其类型,否则将返回 “undefined”。 if (typeof myObj === &quo…

    JavaScript 2023年5月27日
    00
  • Javascript Array unshift 方法

    以下是关于JavaScript Array unshift方法的完整攻略。 JavaScript Array unshift方法 JavaScript Array unshift方法用于在数组的开头添加一个或多个元素,并返回新的数组长度。该方法会改变原始数组。 下面是一个使用unshift方法的示例: var arr = [1, 2, 3, 4, 5]; v…

    JavaScript 2023年5月11日
    00
合作推广
合作推广
分享本页
返回顶部