博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深入了解setInterval方法
阅读量:6328 次
发布时间:2019-06-22

本文共 1984 字,大约阅读时间需要 6 分钟。

相信大家对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不了的情况了。如有错误,敬请指正。

经典论坛讨论:

本文链接:

转载地址:http://bzfoa.baihongyu.com/

你可能感兴趣的文章
理解并取证:IPv6与IPv4在报文结构上的区别
查看>>
EOS主网上线只是开始,如何运营决定未来
查看>>
不用Visual Studio,5分钟轻松实现一张报表
查看>>
(译)如何使用cocos2d和box2d来制作一个Breakout游戏:第一部分
查看>>
计算机图形学(一) 图形系统综述
查看>>
持续集成(CI)- 几种测试的区别(摘录)
查看>>
多用户虚拟Web3D环境Deep MatrixIP9 1.04发布
查看>>
求高手,求解释
查看>>
[MSSQL]NTILE另类分页有么有?!
查看>>
winform datagridview 通过弹出小窗口来隐藏列 和冻结窗口
查看>>
Jquery闪烁提示特效
查看>>
最佳6款用于移动网站开发的 jQuery 图片滑块插件
查看>>
C++ String
查看>>
获取系统托盘图标的坐标及文本
查看>>
log4j Test
查看>>
HDU 1255 覆盖的面积(矩形面积交)
查看>>
Combinations
查看>>
SQL数据库无法附加,提示 MDF" 已压缩,但未驻留在只读数据库或文件组中。必须将此文件解压缩。...
查看>>
第二十一章流 3用cin输入
查看>>
在workflow中,无法为实例 ID“...”传递接口类型“...”上的事件“...” 问题的解决方法。...
查看>>