jq手写碰撞小球

  1 jQuery.fn.bump = function() {
  2     var ele = $(this);
  3     var eleW = ele.width();
  4     var eleH = ele.height();
  5     //运动的高度和宽度范围
  6     var W = $(window).width()-eleW;
  7     var H = $(window).height()-eleH;
  8     window.onresize = function () {
  9         W = $(window).width()-eleW;
 10         H = $(window).height()-eleH;
 11     }
 12     var tan_b = H / W;
 13     var tan = Math.random()*5;
 14     var v_h = 500;
 15     var s_h = 0;
 16     var t = 0,
 17         x = 0,
 18         y = 0;
 19     a = Math.floor(Math.random() * W);
 20     b = Math.floor(Math.random() * H);
 21     //建立一个方向的对象
 22     var der = {
 23         l: true,
 24         t: false,
 25         r: false,
 26         b: true
 27     };
 28     //first
 29     ele.css({
 30         ‘top‘: b,
 31         ‘left‘: a
 32     });
 33     function move() {
 34         //1
 35         if(!der.l && !der.t && der.r && der.b){
 36             if(a!=W){
 37                 var tanA = (H - b) / (W - a);
 38                 if(tanA < Math.abs(tan)) {
 39                     y = H;
 40                     x = (y-b) / tan + a;
 41                     der.l=false;der.t=true;der.r=true;der.b=false;
 42                 } else {
 43                     x = W;
 44                     y = (x-a) * tan + b;
 45                     der.l=true;der.t=false;der.r=false;der.b=true;
 46                 }
 47             } else {
 48                 X = a;
 49                 y = b;
 50                 der.l=true;der.t=false;der.r=false;der.b=true;
 51             }
 52         //2
 53         } else if(!der.l && der.t && der.r && !der.b){
 54             if(a!=W){
 55                 var tanA = b / (W - a);
 56                 if(tanA < Math.abs(tan)) {
 57                     y = 0;
 58                     x = b / tan + a;
 59                     der.l=false;der.t=false;der.r=true;der.b=true;
 60                 } else {
 61                     x = W;
 62                     y = b - (x-a) * tan;
 63                     der.l=true;der.t=true;der.r=false;der.b=false;
 64                 }
 65             } else {
 66                 X = a;
 67                 y = b;
 68                 der.l=true;der.t=true;der.r=false;der.b=false;
 69             }
 70         //3
 71         } else if(der.l && der.t && !der.r && !der.b){
 72             if(a!=0){
 73                 var tanA = b / a;
 74                 if(tanA < Math.abs(tan)) {
 75                     y = 0;
 76                     x = a - b / tan;
 77                     der.l=true;der.t=false;der.r=false;der.b=true;
 78                 } else {
 79                     x = 0;
 80                     y = b - a*tan;
 81                     der.l=false;der.t=true;der.r=true;der.b=false;
 82                 }
 83             } else {
 84                 x = 0;
 85                 y = b;
 86                 der.l=false;der.t=true;der.r=true;der.b=true;
 87             }
 88         //4
 89         } else if(der.l && !der.t && !der.r && der.b){
 90             if(a!=0){
 91                 var tanA = (H - b) / a;
 92                 if(tanA < Math.abs(tan)) {
 93                     y = H;
 94                     x = a - (H - b)/tan;
 95                     der.l=true;der.t=true;der.r=false;der.b=false;
 96                 } else {
 97                     x = 0;
 98                     y = b + a*tan;
 99                     der.l=false;der.t=false;der.r=true;der.b=true;
100                 }
101             } else {
102                 x = 0;
103                 y = b;
104                 der.l=false;der.t=false;der.r=true;der.b=true;
105             }
106         }
107         s_h =  Math.sqrt((x-a)*(x-a) + (y-b)*(y-b));
108         t = (s_h / v_h)*1000;
109         ele.animate({
110             ‘top‘: y,
111             ‘left‘: x
112         },t,‘linear‘,function(){
113             a = x;
114             b = y;
115             move();
116         });
117     }
118     move();
119 };

调用和html

时间: 2025-01-03 12:19:47

jq手写碰撞小球的相关文章

手写promise

写在前面: 在目前的前端分开中,我们对于异步方法的使用越来越频繁,那么如果处理异步方法的返回结果,如果优雅的进行异步处理对于一个合格的前端开发者而言就显得尤为重要,其中在面试中被问道最多的就是对Promise方法的掌握情况,本章将和大家一起分析和完成一个Promise方法,希望对你的学习有一定的帮助. 了解Promise 既然我们是要模仿ES6的Promise,那我们必然要知道这个方法主要都是用来干什么的,有哪些参数,有什么特性,为什么要使用Promise及如何使用等等. 为什么要使用它? 1.

放弃antd table,基于React手写一个虚拟滚动的表格

缘起 标题有点夸张,并不是完全放弃antd-table,毕竟在react的生态圈里,对国人来说,比较好用的PC端组件库,也就antd了.即便经历了2018年圣诞彩蛋事件,antd的使用者也不仅不减,反而有所上升. 客观地说,antd是开源的,UI设计得比较美观(甩出其他组件库一条街),而且是蚂蚁金服的体验技术部(一堆p7,p8,p9,基本都是大牛级的)在持续地开发维护,质量可以信任. 不过,antd虽好,但一些组件在某一些场景下,是很不适用的.例如,以表格形式无限滚动地展示大量数据(1w+)时,

wex5 实战 手写签名与上传

之前做过一个物流演示模块,有一个功能没做完,就是收件人收货后,可以手写签名并上传,替代传统纸张的签名.今天终于做完了. 一 效果演示: 后台图片上传成功 二 设计思路: 运用canvas插件jq-signature,制作手写签名,并通过二进制流方式上传图片 三 代码实现: 1 .下载引入插件jq-signature 手写签名插件,网上有很多,经过多种插件的逐步尝试,只有插件jq-signature达到了我想要的效果; 原因有二:1,支持手机触摸,web,鼠标.其它有的不支持手机触摸. 2,直接转

iOS开发UI基础—手写控件,frame,center和bounds属性

一.手写控件 1.手写控件的步骤 (1)使用相应的控件类创建控件对象 (2)设置该控件的各种属性 (3)添加控件到视图中 (4)如果是button等控件,还需考虑控件的单击事件等 (5)注意:View Contollor和view的关系 2.注意点 在OC开发中,Storyboard中的所有操作都可以通过代码实现,程序员一定要熟练掌握代码布局界面的能力! 设置控件监听方法的示例代码如下: [btn addTarget:self action:@selector(click:) forContro

logistic回归与手写识别例子的实现

本文主要介绍logistic回归相关知识点和一个手写识别的例子实现 一.logistic回归介绍: logistic回归算法很简单,这里简单介绍一下: 1.和线性回归做一个简单的对比 下图就是一个简单的线性回归实例,简单一点就是一个线性方程表示 (就是用来描述自变量和因变量已经偏差的方程) 2.logistic回归 可以看到下图,很难找到一条线性方程能将他们很好的分开.这里也需要用到logistic回归来处理了. logistic回归本质上是线性回归,只是在特征到结果的映射中加入了一层函数映射,

KNN分类算法实现手写数字识别

需求: 利用一个手写数字"先验数据"集,使用knn算法来实现对手写数字的自动识别: 先验数据(训练数据)集: ?数据维度比较大,样本数比较多. ? 数据集包括数字0-9的手写体. ?每个数字大约有200个样本. ?每个样本保持在一个txt文件中. ?手写体图像本身的大小是32x32的二值图,转换到txt文件保存后,内容也是32x32个数字,0或者1,如下: 数据集压缩包解压后有两个目录:(将这两个目录文件夹拷贝的项目路径下E:/KNNCase/digits/) ?目录trainingD

使用Caffe进行手写数字识别执行流程解析

之前在 http://blog.csdn.net/fengbingchun/article/details/50987185 中仿照Caffe中的examples实现对手写数字进行识别,这里详细介绍下其执行流程并精简了实现代码,使用Caffe对MNIST数据集进行train的文章可以参考  http://blog.csdn.net/fengbingchun/article/details/68065338 : 1.   先注册所有层,执行layer_factory.hpp中类LayerRegis

07 训练Tensorflow识别手写数字

打开Python Shell,输入以下代码: 1 import tensorflow as tf 2 from tensorflow.examples.tutorials.mnist import input_data 3 4 # 获取数据(如果存在就读取,不存在就下载完再读取) 5 mnist = input_data.read_data_sets("MNIST_data/", one_hot=True) 6 7 # 输入 8 x = tf.placeholder("flo

【转】机器学习教程 十四-利用tensorflow做手写数字识别

模式识别领域应用机器学习的场景非常多,手写识别就是其中一种,最简单的数字识别是一个多类分类问题,我们借这个多类分类问题来介绍一下google最新开源的tensorflow框架,后面深度学习的内容都会基于tensorflow来介绍和演示 请尊重原创,转载请注明来源网站www.shareditor.com以及原始链接地址 什么是tensorflow tensor意思是张量,flow是流. 张量原本是力学里的术语,表示弹性介质中各点应力状态.在数学中,张量表示的是一种广义的"数量",0阶张量