JavaScript 弹簧效果

上次做图片滑动展示效果时做了减速效果,就想做一个加速效果。结合起来就想到了下面这个东西,当然只是类似弹簧,而不是真正的弹簧。

先看效果:
固定范围反弹:

范围渐变反弹:

自定范围反弹:

范围:


程序说明:
虽然说的是弹簧效果,但实际上要实现的是定点坐标之间的加速和减速移动。
点到点的移动应该都知道怎么做,这里是通过设置滑动对象的left来实现的。
而减速效果,一般的做法是通过用目标值减当前值除以一个系数(一般为正整数),得到一个步长。
然后当前值加上这个步长作为新的当前值,然后反复取值直到当前值等于目标值。
由于这样得到的步长是越来越小的,而步长就是移动的值,所以就做成减速效果。
那如何做加速效果呢?
由于取不到能对应减速步长的加速的步长(或者有方法我想不到),所以我想了个方法,
一开始先把所有减速的步长算出来,放到一个数组中,作为减速时的步长,那加速的步长就是这个数组的反转了(即倒过来)。
这个部分主要在SetStep()函数中,可参照代码。
其他部分在代码中都有说明。

程序代码:
Code

测试html:
Code

测试代码:
Code

下载完整测试代码
转载请注明出处:http://www.cnblogs.com/cloudgamer/
Tag标签: JavaScript,弹簧
posted @ 2008-05-17 14:41 cloudgamer 阅读(6425) 评论(34)  编辑 收藏 网摘 所属分类: Javascript

  回复  引用  查看    
#1楼2008-05-17 14:45 | 梁逸晨      
很有趣
  回复  引用  查看    
#2楼2008-05-17 14:46 | 李涛      
有点炫哦,支持了
  回复  引用  查看    
#3楼[楼主]2008-05-17 15:05 | cloudgamer      
@梁逸晨
@李涛

谢谢

  回复  引用    
#4楼2008-05-17 16:22 | dqw[未注册用户]
很厉害
收藏了

  回复  引用  查看    
#5楼2008-05-17 17:30 | tthxnz      
用flash和silverlight很容易的东西为什么要搞这么复杂
  回复  引用  查看    
#6楼[楼主]2008-05-17 17:54 | cloudgamer      
@tthxnz

呵呵
各有所好嘛
我对flash和silverlight就一点都不会

  回复  引用  查看    
#7楼2008-05-17 18:17 | 求知无傲      
支持
  回复  引用  查看    
#8楼2008-05-17 19:03 | Justin      
这个也很牛
  回复  引用  查看    
#9楼2008-05-17 21:13 | tthxnz      
@cloudgamer

呵呵,不过还是蛮不错的

  回复  引用  查看    
#10楼2008-05-17 21:53 | 王孟军!      
呵呵
不错,有点意思

  回复  引用    
#11楼2008-05-17 22:08 | 晕倒[未注册用户]
确实,不知道这个在哪里实用了,只是好看而已,就像前几年的JS一样,做做表表单验证,然后要么就是一些什么时钟物类之类的

而现在一般都是实用型的,再说了博主这些效果为什么要费如果之长的代码来实现?

jQuery实现你昨天还有今天发布的效果,最多每个实例30行就可以完全搞定

  回复  引用  查看    
#12楼[楼主]2008-05-17 22:59 | cloudgamer      
@晕倒

jQuery30行就可以完全搞定
但你知道jQuery本身有多少行么
像上面Class extend都是从prototype框架拿来的
取其所需就好

  回复  引用    
#13楼2008-05-18 02:11 | guy[未注册用户]
@晕倒
这个只能说明一个问题:JS在你的眼中,永远只是做这些效果的。虽然上面给出的只是一些效果,但是原理懂了,可以结合实际开发出来一些不错的应用。当一个人可以把技术拿来耍着玩的时候,我相信,其对这项技术的认识,也有相当的水平了。

从你的反应可以看得出来,你并没有跟上这个时代的进步。我不知道你现在做ASP。NET拿多少钱一个月工资,反正我认识的一些朋友,就只是写写JS而已,工资可以达到6-7K左右,想信这个也比一小部份专职.NET的程序员高了。不要小看JS。

还想说一句,现在很多人连走路都走不稳的时候,就想跑!很可爱!只是想说,现在很多人JS一点认识也没有,就直接上框架,什么jQuery,Prototype,EXT等等。

  回复  引用  查看    
#14楼2008-05-18 10:42 | 杨正祎(阿一)      
好强~ 拜一个。。
  回复  引用  查看    
#15楼2008-05-18 12:47 | 爱在戏院前      
其实我觉得楼主写的不错,其实我一直在找这方面的特效,光看jquery,ext,prototype我又没时间……因为我不是纯js,但是对这个非常感兴趣,呵呵,支持楼主,下回希望给个单击鼠标后产生一个div,并且逐渐变大的效果。
  回复  引用  查看    
#16楼[楼主]2008-05-18 13:09 | cloudgamer      
@guy
@杨正祎(阿一)
@爱在戏院前

谢谢

  回复  引用  查看    
#17楼2008-05-18 15:09 | 高_超      
不错的效果啊。收藏了
  回复  引用  查看    
#18楼2008-05-19 11:40 | Clark Zheng      
收藏谢谢博主
  回复  引用  查看    
#19楼[楼主]2008-07-08 18:38 | cloudgamer      
@Clark Zheng
@高_超
谢谢

  回复  引用  查看    
#20楼2008-07-28 16:12 | 火无极      
让我想起了最早做的小球,呵呵
顶一个

  回复  引用  查看    
#21楼2008-07-28 16:13 | 火无极      
看来这位兄弟对JS掌握不错,以后有JS方面的问题就请教哈
  回复  引用  查看    
#22楼[楼主]2008-07-31 20:11 | cloudgamer      
@火无极
共同学习

  回复  引用    
#23楼2008-10-23 19:18 | kkp[未注册用户]
楼主不错,我以前写了个,感觉没有你这个平滑,下下来我研究一下
  回复  引用  查看    
#24楼[楼主]2008-10-23 19:56 | cloudgamer      
@kkp
呵呵
多多交流

  回复  引用  查看    
#25楼2008-12-24 21:17 | 执着De宇      
下来学习下--支持楼主
  回复  引用    
#26楼2008-12-25 20:38 | *Iron*[未注册用户]
楼主的JavaScript功夫太深的,不知是怎么练的
  回复  引用    
#27楼2009-01-01 00:29 | asdf999[未注册用户]
; s = vt + at的平方/2 s = 移动的距离
减速的时候a设为负数不就OK了?

  回复  引用    
#28楼2009-01-01 00:32 | asdf999[未注册用户]
楼主的水平和精神都值得我学习,你的blog收藏了.谢谢
  回复  引用  查看    
#29楼[楼主]2009-01-01 15:07 | cloudgamer      
@asdf999
其实用tween算子做就很简单了
以后应该会写一篇关于tween算子的

  回复  引用    
#30楼2009-01-16 10:35 | freeelancer[未注册用户]
very nice !!~~

非常感谢 楼主这么细心的讲解!!

  回复  引用    
#31楼2009-05-19 13:21 | 雪!~[未注册用户]
JS可以用来做网页游戏了吧!
  回复  引用    
#32楼2009-06-13 00:24 | AngelWings
无意中发现你的blog,内容还真丰富。不错。
但是我发现你没有考虑到性能,如果你打开任务管理器你可以看到cpu会一直在50+上下波动

  回复  引用  查看    
#33楼[楼主]2009-06-13 08:23 | cloudgamer      
@AngelWings
你直接下载实例测试
在博客中测试可能会比较慢

  回复  引用  查看    
#34楼[楼主]2009-07-02 00:44 | cloudgamer      
@freeelancer
@雪!~
谢谢支持




发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 1201386




相关文章:

相关链接: