js模拟抛出球运动

js练手之模拟水平抛球运动

-匀加速运动

-匀减速运动

代码如下:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>js模拟抛出球运动</title>
</head>
<body>
    <div id="ball" style="top: 10px; left: 10px;"></div>
</body>
</html>
body{background-color:rgb(44,52,55);position:relative;width:100%;height:100%;}
#ball {
        width: 100px;
        height: 100px;
        background-color: lightgreen;
        position: absolute;
        border-radius: 100%;
        -webkit-border-radius: 100%;
    }
        (function () {
          //把X,Y维度的运动单独分开处理,X方向是匀速,Y维度是匀加速运动
            var t_x = 0,//x维度的时间t
                t_y = 0,//y维度的时间t
                s_x = 0,//x维度的运动距离
                s_y = 0,//y维度的运动距离
                t_x_increase=5,
                t_y_increase=0.3,
                isMovingUp = 1;
            var _ball = document.getElementById("ball");
            var ballTop = parseInt(_ball.style[‘top‘]),
                ballLeft = parseInt(_ball.style[‘left‘]);

            function ballMovement() {//js模拟抛出球运动,这里忽略了空气阻力
                t_x += t_x_increase;
                if (t_x >= 600) {//水平方向运行到600px时重复
                    t_x = 0;
                }
                s_x = t_x;
                _ball.style[‘left‘] = (ballLeft + s_x) + ‘px‘;

                t_y += t_y_increase;
                if (t_y >= 6 ) {//y方向向下加速到时间为6就反方向
                    isMovingUp = -1 * isMovingUp;
                    t_y = 0;
                } else if (t_y<0) {//y方向向上减速到时间为0就反方向
                    isMovingUp = -1 * isMovingUp;
                    t_y = 0;
                }
                if (isMovingUp != -1) {
                    s_y = 10 * Math.pow(t_y, 2) / 2;//s = gt^2/2 加速向下
                } else {
                    s_y = 180-(60 * t_y - 10 * Math.pow(t_y, 2) / 2);// s=vt-gt^2/2 减速向上
                }
                _ball.style[‘top‘] = (ballTop + s_y) + ‘px‘;//实时设置位置

                requestAnimationFrame(ballMovement); // repeat
            }

            ballMovement();

        })();
时间: 2024-08-11 03:36:25

js模拟抛出球运动的相关文章

nodejs显现events.js:72抛出错误

随着人们开始学习,我用nodejs过程中遇到如下列错误执行: events.js:72 throw er; // Unhandled 'error' event ^ Error: listen EADDRINUSE at errnoException (net.js:901:11) at Server._listen2 (net.js:1039:14) at listen (net.js:1061:10) at Server.listen (net.js:1127:5) at Object.<a

nodejs出现events.js:72中抛出错误

作为初学者,我在使用nodejs的过程中遇到了如下的运行错误: events.js:72 throw er; // Unhandled 'error' event ^ Error: listen EADDRINUSE at errnoException (net.js:901:11) at Server._listen2 (net.js:1039:14) at listen (net.js:1061:10) at Server.listen (net.js:1127:5) at Object.<

Atitti 跨语言异常的转换抛出 java js

异常的转换,直接反序列化为json对象e对象即可.. Js.没有完整的e机制,可以参考java的实现一个stack层次机制的e对象即可.. 抛出RuntimeException vs 还是e.cause; 应该抛出完整e,因为runtimeE可能还有一些说明.. 那如何捕获异常,可以判断,如果是RuntimeException,那么捕获他的cause就可.. function convert2jsEx(data) { if(typeof data=="string") { try{ d

JS模拟土豆弹窗——链式运动

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>JS模拟土豆弹窗——链式运动</title> <style> *{padding: 0; margin: 0;} body{ font-size: 12px; font-family: "微软雅黑"; overflow: hidden;} #foot{ width:

node.js抛出错误问题

很多node.js程序员都习惯使用: throw "error"抛出错误 或者在回调函数中 callback('error') 这些代码咋node.js中都能正常运行,但是从代码规范性来说,这就是相当不规范的代码了. 1.无法同构error.stack获取错误的堆栈信息 2.抛出的并不是一个Error对象 正确的方式是每次抛出错误或者毁掉中返回错误的时候,都使用 new Error('error')来构造一个错误对象,这样在后续的错误中,能轻松的获得错误的堆栈信息,定位错误.

js例外被抛出且未被接住

var form = $("<form>"); form.attr('style', 'display:none'); form.attr('target', ''); form.attr('method', 'post'); form.attr('action', path); var input1 = $('<input>'); input1.attr('type','hidden'); input1.attr('name', 'wjjson'); inpu

JS异常捕获和抛出

try...catch 用来异常捕获(主要适用于IE5以上内核的浏览器,也是最常用的异常捕获方式) 使用onerror时间捕获异常,这种捕获方式是比较古老的一中方式,目前一些主流的浏览器暂不支持这种 捕获方式. 捕获异常的语法如下: try { //运行代码 } catch(err) { //处理错误 } 测试示例代码如下,abc是一个未定义的函数,会抛出异常,异常信息会被try catch,进入catch语句中执行 var msg = ""; try{ abc(); }catch(e

js模拟点击事件实现代码

js模拟点击事件实现代码 更新时间:2012年11月06日 17:33:33   作者:   我要评论 在实际的应用开发中,我们会常常用到JS的模事件,比如说点击事件,举个简单的例子,点击表单外的“提交”按钮来提交表单.上代码吧 html: 复制代码 代码如下: <h3>请单击“提交”,测试提交按钮的单击事件也被触发了.</h3> <button id="btn">提交</button> <form action="#&q

单篇文章JS模拟分页

废话部分 前两天做了一个前台分页插件,支持ajax读取数据绑定前台 和 url带页码参数跳转两种方式.于是稍加改动,做了一个单篇文章js模拟分页的代码,为什么说是模拟分页呢?因为在服务器响应HTML请求的时候,就已经把全文回传给客户端了,只是我们通过js的方式,把全文隐藏,每次翻页至显示出我们需要的那一部分,而不是真正的按需要去发出HTML请求.所以,在做这个插件的时候去掉了ajax请求的功能及其附带参数,去掉了pageSize参数(恒等于1).这里就不讨论具体的技术细节了和上一篇的分页计算原理