邮件: 用户名: 密码:
  • 长江网首页
  • 英文版
  • 加入收藏夹
  • 新闻   |   宽频   |   网摘   |   影视   |   娱乐   |   体育   |   财经   |   文学   |   动漫   |   贴图   |   家居   |   访谈   |   美食   |   交通   |   房产   |   娱乐星空   |   江城警讯网   |   武汉文明网
    论坛   |   博客   |   网论   |   时尚   |   天下   |   动物   |   两性   |   汽车   |   科技   |   古玩   |   旅游   |   言语   |   购物   |   游玩   |   区局   |   长江无线   |   武汉交管网   |   武汉汽车网
    现在位置:>> 动漫 >> flash教程

    深入了解setInterval方法

    2007-05-27 16:57    【查看评论】 【字号: 】 【收藏此页】 【关闭窗口
      长江网讯  相信大家对setInterval方法肯定非常熟悉,但不少人对其缺乏深入的了解,致使当一个flash里有多个setInterval的时候就容易混淆,该清除的间隔lID没有清除,不该清除的时候却清除了。对于setInterval的语法我就不赘述,很多文章都有详细说明,下面来说一下 setInterval的几个重点。

    1、setInterval和clearInterval都是全局函数,也就是_global.setInterval()和_global.clearInterval()。

    这一点大家应该都知道,但是可能并没有特别注意。不过这点对我们理解他们非常重要。setInterval的返回值是一个间隔lID(数字),所以这个间隔lID也是全局的。比如下面的代码:

    var rootID=setInterval(_root,"test",500,"rootID");
    function test(arg){
       trace(arg);
    }

    我们用clearInterval(rootID)和用clearInterval(1)的作用是一样的。

    2、每一次调用setInterval,就会返回一个间隔lID,这个ID数值为全局setInterval的调用次数。

    比如下面的代码:

    var rootID=setInterval(_root, "test", 500, "rootID");
    btn1.onPress=function(){
           setInterval(_root, "test", 500, "btn1_ID");
    }
    btn2.onPress=function(){
           setInterval(_root, "test", 500, "btn2_ID");
    }
    function test(arg) {
        trace(arg);
    }

    在这个例子里,我们可以用clearInterval(1)来清除间隔rootID。假如我们先点击btn1再点击btn2,那么就可以用 clearInterval(2)来清除点击btn1所产生的间隔ID,而用clearInterval(3)来清除点击btn2所产生的间隔ID。相反,如果我们先是点击btn2再点击btn1,那么clearInterval(2)则是清除点击btn2所产生的间隔ID.

    3、给间隔lID添加标识符
    在实际编程中,用上面的clearInterval(数字)这样的方式固然可以清除间隔ID,但是一旦ID过多,我们就会无法识别该清除哪个ID。因此给间隔lID添加标识符就显得非常重要。但是必须把他分配到一个对象的成员变量中。
    比如下面的代码:

    newtest();
    function newtest(){
    var newID=setInterval(_root,"test",500,"btn2_ID");
    }
    function test(arg){
       trace(arg);
    }

    这样的标识方法就是错误的,因为testID是一个局部变量,仅作用于new方法内。因而无法在其他地方用clearInterval(newID)来清除此间隔。而去掉前面的var就可以了(此时newID是_root的一个成员变量)。

    4、增加一个清除loadMovieNum加载进来swf的间隔ID的例子:

    在IntervalID2.swf文件里的有个间隔ID:

    var IntervalID2=setInterval(_root,"test",1000,"IntervalID2");
    function test(arg){
        trace(arg);;
    }

    在IntervalID1.swf里:

    loadMovieNum("IntervalID2.swf",1)
    btn1.onPress = function(){
       clearInterval(_level1.IntervalID2)
       IntervalID1=setInterval(_root,"test",2000,"IntervalID1";
    };
    btn2,onPress = function(){
       clearInterval(2) //clearInterval(IntervalID1)
    };
    function test(arg){
        trace(arg);
    }         

    在此例中,如果我们先点击btn1再点击btn2,那么2个间隔ID都会删除,而如果先点击btn2,那么IntervalID1是没有清除的。明白上面三点后,这些应该就是显而易见的了。

    总结:了解了上面几个重点后,我想使用setInterval方法就会一清二白了,不会怕setInterval了而clearInterval不了的情况了。如有错误,敬请指正。

     
    【发表评论】 【字号: 】 【收藏此页】 【关闭窗口
     最新发表的评论                           更多评论
     发表新的评论
    Top↑
          防脱生发专家      武汉地产集团
      
    最新资讯 更多  
  • 采柿裙摆间 向日葵主角手办
  • 欢迎光临蛋糕房!萝莉女仆COS
  • 国产迪斯尼乐园震惊日美媒体
  • 银魂志村妙和服COSPLAY(水原...
  • 海洋堂saber模型爆出品质问题
  • DreamParty2007春·东京现场...
  • 憨憨Big Bear小熊分体式笔筒
  • 动漫史上塑造最成功的女主角们
  • 观察:中国动漫市场需要耐心培育
  • 诅咒?日本动漫画家作家相继去世
  • flash笑话 更多  
  • 红眼猪 加勒比海盗
  • 竹林镇 路牌
  • 蜘蛛侠之营养不良
  • 铅笔动画人
  • 相声 查卫生
  • 霸王别姬
  • 绿豆蛙 欢禧面包圈4
  • 绿豆蛙 欢禧面包圈3
  • 绿豆蛙 欢禧面包圈2
  • 绿豆蛙 欢禧面包圈1
  • flash游戏 更多  
  • 泡泡糖
  • 新掏金者中文版
  • 小破孩奔月
  • 连体拳击(爆笑篇)
  • 变形金刚版守城
  • 轩辕魔法CS
  • 肌肉男子
  • Q宠速配
  • 精心陷阱
  • 圣斗士大作战
  • 音乐MV 更多  
  • 残酷的爱158
  • 放下全世界の沐尔
  • 北京土著
  • 侧田 决战二世祖
  • 天使恋人
  • 周杰伦 屋顶
  • 只想和你在一起
  • 至霖情歌
  • 长江广告 更多  
    长江互动传媒网 武汉综合新闻网站
    网站简介网站地图版权说明豁免条款联系我们
    客服电话:027-85779997 027-82781258
    长江网版权所有 未经授权禁止复制和建立镜像
    鄂ICP证:020001 信息网络传播视听节目许可证:1704064 增值电信业务经营许可证:鄂 B2-20040006