请选择 进入手机版 | 继续访问电脑版
收藏本站腾讯微博新浪微博
点点网模板设计大赛 phpchina

经典论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

蓝色理想 最新研发动态 用悬赏 三天解决问题 解决访问速度慢 论坛支持农历生日 - 给官方提建议

论坛活动及任务 归纳网站最新活动 地图任务 邮件更新任务:保护帐号安全

积分换实物,来参加蓝色理想积分兑换吧! 联系招聘客服 蓝色理想帮你找工作! 万元奖励等你拿——点点网模板设计大赛

查看: 14999|回复: 63

菜鸟跟我学——缓冲效果(原创) [复制链接]

FFEEDD 楼主

褪色

银牌会员 手机认证 

帖子
439
体力
1384
威望
1
居住地
北京市 朝阳区
发表于 2008-9-3 15:09:26 |显示全部楼层
首先我要说的是,我是菜鸟,这些文章是献给和我一样想要学习的菜鸟们.
论坛里有几位朋友发过缓冲效果,但是象我这种菜鸟看他们的代码实在是一种痛苦,因为不是一个层次的.
所以我用最最冗余的代码来写出这种效果,目的就是希望菜鸟们能看懂,
当我们不菜的时候我们再回头去看高手们的东西.
最后,请相信这句话:
有一天菜鸟也会成为高手,(前提是你要努力哈哈^^)

 提示:您可以先修改部分代码再运行


关键代码请看这两个就可以了
  1. function f_s(){
  2.         var obj=document.getElementById("box");//获取ID为box的对象
  3.         obj.style.display="block";//设置对象obj为显示
  4.         obj.style.width="1px";        //设置对象obj的宽度为1px
  5.         var changeW=function(){ //(关于函数这一点,什么闭包,什么类、原型的,弄的我头大了,以后慢慢理解吧。这里我理解的是创建一个函数直接量并把它存进变量changeW里)
  6.                 var obj_w=parseInt(obj.style.width);//把对象的宽度转换为一个数值,并存入变量obj_w中;
  7.                 if(obj_w<600){ //判断,如果宽度数值小于600
  8.                         obj.style.width=(obj_w+Math.ceil((600-obj_w)/15))+"px";//计算对象的宽度。。。随着宽度的变长,递增量越来越小
  9.                 }
  10.                 else{
  11.                 clearInterval(bw);//如果大于等于600的话,不再执行setInterval,意思就是这个时候停止增加宽度了。
  12.                 }
  13.         }       
  14.         var bw=window.setInterval(changeW,1)//每0.001秒调用一次changeW
  15. }
复制代码
  1. //slow to fast 由慢到快
  2. //声明一个函数s_f()
  3. function s_f(){
  4.         var obj=document.getElementById("box2");       
  5.         var e_add=1;//初始化递增量
  6.         obj.style.display="block";
  7.         obj.style.width="1px";
  8.         var changeW=function(){//我理解的是创建一个函数直接量并把它存进变量changeW里
  9.                 var obj_w;e_add
  10.                 obj_w=parseInt(obj.style.width);
  11.                 e_add*=1.05;//以后每次递增的值都是
  12.                 if(obj_w<600){
  13.                         obj.style.width=(obj_w+e_add)+"px";//随着宽度的变长,递增量越来越大
  14.                 }
  15.                 else{
  16.                 clearInterval(bw);
  17.                 obj.style.width="600px";//因为(obj_w+e_add)这种计算方法会超出预定义的宽度,所以这里在缓冲完以后重新设置它的宽度.造成一种假象哈哈
  18.                 }       
  19.         }               
  20.         var bw=window.setInterval(changeW,1)
  21. }
复制代码

[ 本帖最后由 FFEEDD 于 2008-9-3 16:24 编辑 ]
已有 1 人评分威望 收起 理由
cloudgamer + 1 谢谢分享

总评分: 威望 + 1   查看全部评分

no idea
西部数码顶级域名注册商39元抢注!
帖子
183
体力
709
威望
0
发表于 2008-9-3 15:15:18 |显示全部楼层
感谢楼主,正在学呢。呵呵
租服务器,上51IDC | [长沙]招聘:PHP经理10K/WEB前端6K/PHP开发6K

使用道具 举报

oncean 

月林飘水

高级会员 手机认证 

帖子
474
体力
830
威望
0
居住地
江苏省 无锡市
发表于 2008-9-3 15:40:16 |显示全部楼层
感谢楼主!忠心感谢!
终于明白了缓冲的原理了~

使用道具 举报

hoogl 
帖子
79
体力
261
威望
0
发表于 2008-9-3 17:06:45 |显示全部楼层
占个位置,收藏了!
20字节以内

使用道具 举报

MgShow 
帖子
15
体力
40
威望
0
居住地
西藏自治区 拉萨市
发表于 2008-9-3 18:03:19 |显示全部楼层
这么好的帖子居然没人顶,对新人很有帮助
经典论坛都成大家来锁要代码的工厂了

使用道具 举报

rage 
帖子
18
体力
131
威望
0
发表于 2008-11-4 10:33:30 |显示全部楼层
楼主这篇讲解的很详细!顶!

使用道具 举报

帖子
8
体力
26
威望
0
发表于 2008-11-4 10:55:36 |显示全部楼层
function f_s(){
    var obj=document.getElementById("box");//获取ID为box的对象
    obj.style.display="block";//设置对象obj为显示
    obj.style.width="1px";    //设置对象obj的宽度为1px
    var changeW=function(){ //(关于函数这一点,什么闭包,什么类、原型的,弄的我头大了,以后慢慢理解吧。这里我理解的是创建一个函数直接量并把它存进变量changeW里)
        var obj_w=parseInt(obj.style.width);//把对象的宽度转换为一个数值,并存入变量obj_w中;
        if(obj_w<600){ //判断,如果宽度数值小于600
            obj.style.width=(obj_w+Math.ceil((600-obj_w)/15))+"px";//计算对象的宽度。。。随着宽度的变长,递增量越来越小
        }
        else{
        clearInterval(bw);//如果大于等于600的话,不再执行setInterval,意思就是这个时候停止增加宽度了。
        }
    }   
    var bw=window.setInterval(changeW,1)//每0.001秒调用一次changeW
}


对于JS的写法有些晕晕的,
还请楼主能够解疑,
就是在一个函数中定义一个变量然后付值为另一个函数(还不带返回值)
就如上面写的
function f_s(){
                 ........
                 var changeW=function(){
                 }
}

使用道具 举报

tmulmt 

墨墨无雨

银牌会员

帖子
2086
体力
2069
威望
0
发表于 2008-11-4 12:16:34 |显示全部楼层
多谢楼主讲解,收了慢慢学。

使用道具 举报

yoom 

木匠的背篓

版主 手机认证 

帖子
4897
体力
14505
威望
18
居住地
浙江省 杭州市

维基贡献

发表于 2008-11-4 12:43:02 |显示全部楼层
顶,缓冲效果很赞的说!

使用道具 举报

三嗔

银牌会员

帖子
966
体力
2324
威望
18
发表于 2008-11-4 12:53:45 |显示全部楼层
原帖由 tanzhen84 于 2008-11-4 10:55 发表


对于JS的写法有些晕晕的,
还请楼主能够解疑,
就是在一个函数中定义一个变量然后付值为另一个函数(还不带返回值)
就如上面写的
function f_s(){
                 ........
                 var chang ...

function中没有return返回语句,默认是返回undefined的,也就是说该函数没有返回任何值,只需要被调用时执行里面的方法就可以了。

使用道具 举报

帖子
8
体力
26
威望
0
发表于 2008-11-4 15:55:00 |显示全部楼层
原帖由 chaoyuebetter 于 2008-11-4 12:53 发表

function中没有return返回语句,默认是返回undefined的,也就是说该函数没有返回任何值,只需要被调用时执行里面的方法就可以了。


那是不是说那个变量所在的语句的功能就是在执行一个函数,而这种函数是一个匿名函数...不知道是不是这个意思?

使用道具 举报

淡泊曦云

中级会员 手机认证 

帖子
130
体力
360
威望
3
居住地
浙江省 嘉兴市
发表于 2008-11-4 16:16:01 |显示全部楼层
不错,写的很清楚,也很简单的实现了这个功能,其实大的框架才只是菜鸟用的,要实现什么效果,自己写,比较有针对性,往往会少很多代码。

使用道具 举报

休止符

中级会员 手机认证 

帖子
180
体力
658
威望
0
发表于 2008-11-4 16:25:07 |显示全部楼层
建议楼主学点面向对象编程思想 什么对象,类、原型就都解决了
哈哈 我也是初学者

使用道具 举报

帖子
210
体力
608
威望
0
发表于 2008-11-4 17:07:56 |显示全部楼层
不错不错..又学到新技术了...

使用道具 举报

myolie 
帖子
164
体力
377
威望
0
发表于 2008-11-4 18:53:06 |显示全部楼层
刚好可以用到,默默地支持一下。

使用道具 举报

nsnake 
帖子
38
体力
114
威望
0
发表于 2008-11-4 23:23:01 |显示全部楼层
给楼主提个BUG
多点几次向左和向右
然后就看到抽经了

使用道具 举报

帖子
56
体力
165
威望
0
发表于 2008-11-5 14:35:42 |显示全部楼层
very 不错啊

使用道具 举报

游鱼思

中级会员

帖子
133
体力
346
威望
0
居住地
山东省 青岛市
发表于 2008-11-5 14:37:51 |显示全部楼层
蓝色好啊 对我们菜鸟真是体贴!

使用道具 举报

ahwing 

ahwing

银牌会员

帖子
588
体力
1993
威望
2
居住地
广东省 深圳市
发表于 2008-11-5 15:13:48 |显示全部楼层
不错,保存了 。

使用道具 举报

帖子
19
体力
54
威望
0
居住地
广东省 中山市
发表于 2008-11-5 17:32:10 |显示全部楼层
非常感谢!!

使用道具 举报

啸天皇帝

银牌会员

帖子
587
体力
2290
威望
0
居住地
广东省 深圳市
发表于 2008-11-5 18:05:34 |显示全部楼层
当层 收回时文字可以不让它换行吗?

使用道具 举报

帖子
93
体力
440
威望
0
居住地
重庆市 沙坪坝区
发表于 2008-11-5 18:31:21 |显示全部楼层
建议楼主在那个由慢到快  和由快到慢的css里加个overflow:hidden

使用道具 举报

帖子
8
体力
29
威望
0
发表于 2008-11-6 11:57:29 |显示全部楼层
太好的 楼主做的东西真适合新手
有说明 有例子 还有现成事例```
强烈支持~~~~~
收藏了~

使用道具 举报

逐梦飞翔

中级会员

帖子
339
体力
209
威望
0
发表于 2008-11-7 10:08:13 |显示全部楼层
已经收藏,谢谢楼主

使用道具 举报

帖子
13
体力
40
威望
0
居住地
安徽省 合肥市
发表于 2008-11-7 10:12:34 |显示全部楼层
不错 不错
先给你顶了 在去慢慢研究代码

使用道具 举报

Andy88

银牌会员

帖子
2589
体力
1820
威望
0
发表于 2008-11-7 10:49:34 |显示全部楼层
原帖由 nsnake 于 2008-11-4 23:23 发表
给楼主提个BUG
多点几次向左和向右
然后就看到抽经了

设个变量,在setinterval时候不可点.
Thr's an I in happiness, thr's no Y in happiness

使用道具 举报

amu945 
帖子
1745
体力
13106
威望
47
居住地
重庆市 九龙坡区
发表于 2008-11-7 12:25:23 |显示全部楼层
其实,我觉得学过as,里面就会常用过这些效果。关键性的代码原理是一样的。再回来学js更舒服一些。
美女车手Victoria Pendleton
http://www.ibiker.net/communion/question.php?id=11

使用道具 举报

eLore 
帖子
224
体力
673
威望
2
居住地
广东省 惠州市
发表于 2008-11-7 14:57:15 |显示全部楼层
以前写的,和楼主差不多

 提示:您可以先修改部分代码再运行

网络如此多娇 引无数小鸟竟折腰

使用道具 举报

yhseng 
帖子
18
体力
42
威望
0
居住地
山东省 烟台市
发表于 2008-11-7 15:11:47 |显示全部楼层
支持
晕!

使用道具 举报

帖子
11
体力
50
威望
0
居住地
山东省 青岛市
发表于 2008-11-7 16:09:49 |显示全部楼层
个人看法
关键是搞清楚原理~~在找到关键点~~
然后才能活学活用~
什么情况都可以利用原理改进~写出适合自己的程序!

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

Archiver|手机版|安久科技提供CDN|blueidea.com ( 京ICP备05002321号 )  

GMT+8, 2012-2-9 15:28 , Processed in 0.153638 second(s), 9 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部