JS实现的抛物线运动效果示例


Posted in Javascript onJanuary 30, 2018

本文实例讲述了JS实现的抛物线运动效果。分享给大家供大家参考,具体如下:

先来看看运行效果:

JS实现的抛物线运动效果示例

具体代码如下:

<!doctype html >
<html>
<head>
  <meta charset="utf-8"/>
  <title>抛物线运动</title>
  <style>
    .pwx_rect{position:absolute;left:10px;top:300px;background-color:#888;height:50px;width:50px;}
    .pwx_hr{border-top:2px solid #ddd;position:absolute;width:98%;left:0px;top:350px;}
  </style>
  <script>
    test = function(){
      var rect = document.getElementById("rect");
      pwx(rect,60,5); //参数2:抛物线角度,参数3:横向速度每次增加5
    }
    function pwx(rect,radian,step){
      var animate = function(opt){
        var cos = Math.cos(opt.radian*Math.PI/180);//邻边比斜边,60度的话等于1/2
        var sin = Math.sin(opt.radian*Math.PI/180);//对边比斜边,30度的话等于1/2
        var left = opt.rect.offsetLeft;
        var top = opt.rect.offsetTop;
        if(opt.radian>0){
          left+=opt.step;
          opt.radian-=1; //角度递减1
          var a = left - opt.initLeft;
          var c = (a/cos);
          var b = (sin*c);
          opt.rect.style.left = opt.initLeft+a+"px";
          opt.rect.style.top = opt.initTop-b+"px";
          setTimeout(function(){
            animate(opt);
          },10);
        }else{
          opt.rect.style.left = left+opt.step+"px";
          opt.rect.style.top = opt.initTop+"px";
        }
      }
      animate({
        step : step,
        rect : rect,
        radian : radian,
        initTop : rect.offsetTop,
        initLeft : rect.offsetLeft
      });
    }
  </script>
</head>
<body>
3water.com
<input type="button" value="抛物线" onclick="test()"/>
  <div class="pwx_rect" id="rect"></div>
  <div class="pwx_hr"></div>
</body>
</html>

实现思路:

JS实现的抛物线运动效果示例

X方向的边长每次递增5,角度每次递减1,根据这两个已知条件,通过三角函数就可以计算出Y方向的长度是多少

从而得出每次运动的X和Y方向的坐标值,达到抛物线的效果

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
javascript游戏开发之《三国志曹操传》零部件开发(三)情景对话中仿打字机输出文字
Jan 23 Javascript
js关于字符长度限制的问题示例探讨
Jan 24 Javascript
jquery提示效果实例分析
Nov 25 Javascript
vue中渐进过渡效果实现
Oct 27 Javascript
vue.js的提示组件
Mar 02 Javascript
解决VUE框架 导致绑定事件的阻止冒泡失效问题
Feb 24 Javascript
js实现图片上传并预览功能
Aug 06 Javascript
vue组件表单数据回显验证及提交的实例代码
Aug 30 Javascript
浅谈react性能优化的方法
Sep 05 Javascript
vue element-ui实现动态面包屑导航
Dec 23 Javascript
VUE实现Studio管理后台之鼠标拖放改变窗口大小
Mar 04 Javascript
vue 使用插槽分发内容操作示例【单个插槽、具名插槽、作用域插槽】
Mar 06 Javascript
express如何使用session与cookie的方法
Jan 30 #Javascript
JavaScript实现的贝塞尔曲线算法简单示例
Jan 30 #Javascript
详解刷新页面vuex数据不消失和不跳转页面的解决
Jan 30 #Javascript
AngularJS双向数据绑定原理之$watch、$apply和$digest的应用
Jan 30 #Javascript
微信小程序数据存储与取值详解
Jan 30 #Javascript
Vue精简版风格概述
Jan 30 #Javascript
vue自定义全局组件(自定义插件)的用法
Jan 30 #Javascript
You might like
收音机玩机评测 406 篇视频合集
2020/03/11 无线电
php正则校验用户名介绍
2008/07/19 PHP
基于linnux+phantomjs实现生成图片格式的网页快照
2015/04/15 PHP
php实现将二维关联数组转换成字符串的方法详解
2017/07/31 PHP
PHP中散列密码的安全性分析
2019/07/26 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
2020/03/27 PHP
js querySelector和getElementById通过id获取元素的区别
2012/04/20 Javascript
一个检测表单数据的JavaScript实例
2014/10/31 Javascript
什么是 AngularJS?AngularJS简介
2014/12/06 Javascript
javascript制作幻灯片(360度全景图片)
2015/07/28 Javascript
jQuery Validate表单验证入门学习
2015/12/18 Javascript
JavaScript中关联原型链属性特性
2016/02/13 Javascript
JavaScript事件学习小结(五)js中事件类型之鼠标事件
2016/06/09 Javascript
微信小程序 scroll-view组件实现列表页实例代码
2016/12/14 Javascript
JS实现焦点图轮播效果的方法详解
2016/12/19 Javascript
从零开始用electron手撸一个截屏工具的示例代码
2018/10/10 Javascript
JavaScript键盘事件常见用法实例分析
2019/01/03 Javascript
ElementUI多个子组件表单的校验管理实现
2019/11/07 Javascript
Vue的全局过滤器和私有过滤器的实现
2020/04/20 Javascript
JS 设计模式之:单例模式定义与实现方法浅析
2020/05/06 Javascript
vue监听键盘事件的相关总结
2021/01/29 Vue.js
[57:47]Fnatic vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python logging 日志轮转文件不删除问题的解决方法
2016/08/02 Python
Python基于numpy灵活定义神经网络结构的方法
2017/08/19 Python
Python 循环语句之 while,for语句详解
2018/04/23 Python
pandas.DataFrame.to_json按行转json的方法
2018/06/05 Python
python脚本监控Tomcat服务器的方法
2018/07/06 Python
python 创建一维的0向量实例
2019/12/02 Python
解决Python命令行下退格,删除,方向键乱码(亲测有效)
2020/01/16 Python
解决Keras TensorFlow 混编中 trainable=False设置无效问题
2020/06/28 Python
Ann Taylor官方网站:美国最大的女性产品制造商之一
2016/09/14 全球购物
计算机相关的自我评价
2014/01/15 职场文书
2015年全国爱眼日活动方案
2015/05/05 职场文书
2016年大学生暑期社会实践方案
2015/11/26 职场文书
2016计算机专业毕业生自荐信
2016/01/28 职场文书
Java Optional<Foo>转换成List<Bar>的实例方法
2021/06/20 Java/Android