js--链式缓冲运动框架

这些框架都是鄙人自学的网上视频,至于是哪家,想必大家都知道的,当然不纠结这个,最主要的是学习的过程和结果,甚至于你理解,掌握了没有

网上有很多的开源框架,很佩服他们的思路和写法,或许这就是代码之美吧

我一个小小的前台,做界面的,现在也要去学习设计思路了,毕竟你拿工资的多少和你掌握技能的多少、深度是成正比的

当然更要相信

努力必有回报,坚持一定成功

以下是更新的学习运动框架的进度和代码

更新时间:2014-12-11

js框架---缓冲链式运动--已经掌握

 1     //运动框架
 2     //author:Nomand
 3     //2014-12-11
 4     //兼容各中内核浏览器
 5     //解决了webkit核心下的浏览器小数的问题
 6     function getStyle(obj,attr){
 7         return obj.currentStyle?obj.currentStyle[attr]:getComputedStyle(obj,false)[attr];
 8     }
 9     function startMove(obj,attr,iTarget,fn){
10         clearInterval(obj.time);
11         var iCur = 0;
12         obj.time=setInterval(function() {
13             attr == ‘opacity‘ ? iCur = parseInt(parseFloat(getStyle(obj, attr)) * 100) : iCur = parseInt(getStyle(obj, attr));
14             var speed = (iTarget - iCur) / 8;
15             speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
16             if (iCur == iTarget) {
17                 clearInterval(obj.time);
18                 if(fn) {
19                     fn();
20                 }
21             } else {if(obj.style.opacity == (iCur + speed) / 100){
22                         iCur +=1;
23                     }
24                 //这里是解决在webkit下小数问题,当浏览器认为他到达的时候事实上并没有到达,这里直接给他加上1
25                 if(obj.style.opacity == (iCur + speed) / 100){
26                     iCur +=1;
27                 }
28                 attr == ‘opacity‘ ? obj.style.opacity = (iCur + speed) / 100 : obj.style[attr] = iCur + speed + "px";
29             }
30         },20)
31     }

js框架--完美运动(尚未掌握),需要仔细学习

 1 function startMove(obj, json, fnEnd)
 2 {
 3     if(obj.timer)
 4     {
 5         clearInterval(obj.timer);
 6     }
 7     obj.timer=setInterval(function (){
 8         doMove(obj, json, fnEnd);
 9     }, 30);
10
11     var oDate=new Date();
12
13     if(oDate.getTime()-obj.lastMove>30)
14     {
15         doMove(obj, json, fnEnd);
16     }
17 }
18
19 function getStyle(obj, attr)
20 {
21     if(obj.currentStyle)
22     {
23         return obj.currentStyle[attr];
24     }
25     else
26     {
27         return getComputedStyle(obj, false)[attr];
28     }
29 }
30
31 function doMove(obj, json, fnEnd)
32 {
33     var iCur=0;
34     var attr=‘‘;
35     var bStop=true;    //假设运动已经该停止了
36
37     for(attr in json)
38     {
39         if(attr==‘opacity‘)
40         {
41             iCur=parseInt(100*parseFloat(getStyle(obj, ‘opacity‘)));
42         }
43         else
44         {
45             iCur=parseInt(getStyle(obj, attr));
46         }
47
48         if(isNaN(iCur))
49         {
50             iCur=0;
51         }
52
53         var iSpeed=(json[attr]-iCur)/8;
54         iSpeed=iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed);
55
56         if(parseInt(json[attr])!=iCur)
57         {
58             bStop=false;
59         }
60
61         if(attr==‘opacity‘)
62         {
63             obj.style.filter="alpha(opacity:"+(iCur+iSpeed)+")";
64             obj.style.opacity=(iCur+iSpeed)/100;
65         }
66         else
67         {
68             obj.style[attr]=iCur+iSpeed+‘px‘;
69         }
70     }
71
72     if(bStop)
73     {
74         clearInterval(obj.timer);
75         obj.timer=null;
76
77         if(fnEnd)
78         {
79             fnEnd();
80         }
81     }
82
83     obj.lastMove=(new Date()).getTime();
84 }
时间: 2024-11-05 18:45:45

js--链式缓冲运动框架的相关文章

文件上传以及JS链式结构

文件上传: 文件上传使用FileUpload控件,使用控件的SaveAs方法,需要绝对路径. 获取文件的绝对路径:Server.MapPath(相对路径); 或许要上传文件的本身名字用.FileName获取. 因为名字相同的文件将会被直接覆盖,所以一般文件名字要拼接上传时间和用户名保证不重名. 上传文件默认最大为4MB,在C#端限制文件大小有缺陷,一般用JS端限制. 获取要上传的文件通过ID获取FileUpload控件然后通过value值获取文件然后通过.length属性确定是否有文件要上传,然

多元素多属性的链式缓冲

链式运动: 所谓链式运动,也即元素的可运动属性一个接着一个的发生变化,有其一定的需求性.前面所学的缓动函数无法满足链式运动的需求,缓动函数的叠加与定时器分配(一个元素只有一个定时器)之间构成了矛盾,造成只有最后一个缓动函数有效的局面. 为了能够实现链式运动,需要重新封装缓动函数.整体的思路是,在缓动函数中加一个可选的函数参数,当传入该函数时,则在一个属性变化完成后调用. 这样之后,每个缓动函数后面都可以再跟一个缓动函数,类似于递归,直至不再传递缓动函数. 页面布局和样式部分: <!DOCTYPE

Node.js链式回调

由于异步的关系,代码的书写顺序可能和执行顺序并不一样,可能想先执行A再执行B,但由于异步可能B要先于A执行.例如在OC中使用AFnetworking请求数据然后刷新页面,由于网络请求是用block实现的异步方法,所以刷新的时候并没有数据,为了解决这个问题,一般会在请求响应结束在block中刷新页面(这就回出现循环引用的问题,不过node中不会出现). 上面是OC中异步执行中的链式回调,在node.js中也是使用这样的方法在回调中调用方法来实现链式回调. function logCar(car,c

JS 链式调用

<!-- ————————JS函数链式调用——————— --> function Dog(){ this.run=function(){ alert("跑"); return this; }; this.eat=function(){ alert("吃"); return this; }; this.sleep=function(){ alert("睡觉"); return this; }; } var dog=new Dog();

【原生JS组件】javascript 运动框架

大家都知道JQuerry有animate方法来给DOM元素进行运动,CSS3中也有transition.transform来进行运动.而使用原生的Javascript来控制元素运动,需要写很多运动的细节以及兼容. 然而,当你的BOSS不让你使用庞大的JQ框架,而且你开发的产品也需要在一些不兼容CSS3的浏览器运行的时候,你是否觉得每次都要开个定时器来琢磨运动该怎么进行,是件很费力的事情呢? 那么福利来了,笔者最近总结了两个常用的运动框架,并将其写成组件, 只要按照下面的方法调用,即可方便使用.

js链式调用

我们都很熟悉jQuery了,只能jQuery中一种非常牛逼的写法叫链式操作 * $('#div').css('background','#ccc').removeClass('box').stop().animate({width:300}) 那这是如何实现的呢,我自己写了个例子:并非jQuery源码 Ferrinte.prototype.show=function () { for(var i=0;i<this.elements.length;i++) { this.elements[i].s

js链式动画小例子

<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>链式动画</title> <style> * { margin: 0; padding: 0; } #odiv { width: 100px; height: 100px; background: pink; opacity: 0.5; } </style> </hea

js实现多物体运动框架并兼容各浏览器

首先,我们须要知道在js中获取对象的宽度如offsetWidth等.可能会存在一些小小的bug.原因之中的一个在于offsetWidth只不过获取盒子模型中内容的部分宽度.并不包括内边距,边框和外边距.这样会导致控制对象运动与预期不符.这里就不具体的去解释. 而为了解决问题.在这里.我们提供了一个方法来保证我们的运动的准确性. style仅仅能获取元素的内联样式,内部样式和外部样式使用style是获取不到的. currentStyle能够弥补style的不足.可是仅仅适用于IE. getComp

canvas链式弹性运动

上一课我学习了相对于鼠标为目标点的弹性运动,这次就学习了如何以上一个球为目标点的弹性运动,这次的函数比较复杂,首先分成了如下几个函数,首先定义了一个球的model,之后添加了4个球,在加载中调用了动画事件,之后在动画事件里面加载了画线的事件,画完线之后才开始画球,而且专门用了一个函数来计算,也就是完全分开了层次,以免自己的逻辑思维混乱,这是一种编程的良好思维,分区处理内容,这样有效避免了代码重用,也增加了代码可读性. 还是像以前一样,代码如下: var canvas = document.get