SetInterval的用法详解 ajax setinterval用法

简介:在flash中所有的东西都基于事件(event)。这些事件可以是用户触发的诸

如onMouseDown event或者是按下按钮,还可以是flash时间线上帧的移动的结果。
利用后着的例子,常常是运用onEnterFrame event,它允许一个命令或一系列命令

在每一帧被触发。运用这些AS,可以使得动画和主时间线同步发生。但是,随主时

间线的播放进程严格的基于影片设定的帧频或者说FPS (FramesPer Second) 。这

意味着你使用onEnterFrame event事件的动画将在每一帧以每秒发生FPS次的方式

播放。例如,你的电影的帧频是12frame/S,那么onEnterFrameevent就将一秒发生

12次。SetInterval 是FLASHMX的一种函数。它允许你使用自己乐意的基于时间的

事件,有点类似onEnterFrameevent,但它是你自己定义的时间间隔。
为了避免所有的onEnterFrame面临的复杂性,我们可以使用SetInterval。它如

同在美妙的音乐里夹杂的稳健的鼓声。通常鼓点都是很简单的重复打击鼓来配合乐

曲。如果你在你的CD里放一个打击乐,你将听到伴随鼓点的歌曲。按下停止键你将

停止了歌曲,听不到鼓点。SetInterval和其原理类似,就象是flash影片(歌曲)

里面播放鼓点的CD机,只要你告诉SetInterval你想让鼓点敲击的多快。当然,在

flash里,你无必要敲鼓,只是写一些代码。在教程开始前,我们看看JS里类似的函

数是如何运用的。
JS里设定延时:
每一个熟悉JS的人,将感觉使用SetInterval很顺手因为它和JS里设定延时函数

setTimeout 很类似。setTimeout运用在延迟一段时间,再进行某项操作。例如,

靠他,我们可以做一个连结,只有在点击后2秒的延迟,才会弹出窗口。下面给出例

子:
<script>
function ShowMessage(){
alert("Click!");
}
</script>
<a href="javascript: ID = setTimeout('ShowMessage()',2000);

void(0);">Clickhere</a><br>
它就是当你点击后,调用setTimeout来延时2秒。setTimeout靠操作clearTimeout()

来打断延时。在上述例子的实例里,你想防止窗口突然跳出,你需要用
clearTimeout()来作为返回值。例子:
<script>
function ShowMessage2(){
alert("Click!");
ID = setTimeout('ShowMessage2()', 2000);
}
</script>
<a href="javascript: ID = setTimeout('ShowMessage2()',2000);

void(0);">Clickhere</a><br>
<a href="javascript: clearTimeout(ID);">Killalert</a>
如果Killalert在点击连接后2秒内点击,延时函数将被制止,ShowMessage()也不

会被执行。
AS里的setInterval
setInterval和setTimeout是相似的但有些不同。最大的区别是setInterval创

建一个动作连续不断的调用执行函数——象打击鼓点一样。setTimeout,如同上面

所说,将执行一次,然后就停止。一个setTimeout函数可以再次调用自己来模拟事

件的再次发生。例子:
<script>
function ShowMessage2(){
alert("Click!");
ID = setTimeout('ShowMessage2()', 2000);
}
</script>
<a href="javascript: ID = setTimeout('ShowMessage2()',2000);

void(0);">Clickhere</a><br>
<a href="javascript: clearTimeout(ID);">Killalert</a>
当Click here被点击后,弹出窗体的信息将在2秒后显示并且循环执行,除非Kill

alert被点击后调用clearTimeout来清除setTimeout。这是你必须理解的,因为

setInterval 不能用在onEnterFrame事件中。setInterval不意味着可以在快速连

续进程中连续调用。它,通过自身,来在一段间隔后来成功的调用函数。它相较

onEnterFrame而言,不是每帧都要调用函数。当然,如果指定的时间过去了,

onEnterFrame也就不能再被叫做onEnterFrame事件了。
另一点不同的是setTimeout传递的是一个需要被执行的Javascript命令。

SetInterval,传递的是将在时间间隔里被执行的函数(不带“()”),允许你在
Interval参数后定义函数参数。SetInterval允许用两种方法来调用。
1) 直接调用 2)间接引用
1. setInterval ( function, interval [, arg1, arg2, …, argn]);
2. setInterval ( object, "methodName", interval [, arg1, arg2, …,argn]

);
1的例子:
DisplayTrace = function(message){
trace(message);
}
ID = setInterval(DisplayTrace, 2000, "Interval called");
首先,函数被定义。setInterval将在指定的间隔里被调用,在这个例子里,是

2000毫秒。在第二个参数interval后的参数,用来传递给函数。这里,就是
"Intervalcalled"。看到的效果是,函数被调用后,在output窗口将看到Interval

called。
第一种用法基于直接调用函数。但很多时候需要调用一个对象函数,包括对象的属

性。第二种方法就派上了用处。
myObj = new Object();
myObj.DisplayTrace = function(message){
trace(message);
}
ID = setInterval(myObj, "DisplayTrace", 2000, "Intervalcalled");
这里setInterval是通过指针的方式来调用函数的。这意味着函数必须在对象体内

被调用。
另外,setInterval 返回的间隔可以用clearInterval()函数来阻止间隔继续。
clearInterval类似JS的clearTimeout。就是setInterval的反意。间隔标识符,比如

在上面例子的ID,它将作为setInterval的返回值来制止多次的调用子函数:
clearInterval(ID);
需要申明的是在每一个setInterval的调用中,无法同时调用子函数。子函数只有

在时间间隔到了后才会执行。子函数在应用了setInterval后,如果你尝试调用它

,你将得到一个错误的值,因为它没被运行。你确实想要子函数立即执行,它将在

调用setInterval之后被直接调用。
ID = setInterval(DisplayTrace, 2000, "Interval called");
DisplayTrace("Interval called");
总结:
综上所述,setInterval允许你在自己设定的时间段里来达到和onEnterFrame不

一样的事件,并不基于电影的帧频率。关键需要理解的是,setInterval完全独立

于时间轴。这意味着你的setInterval事件将以它被设定的时间来运行,无关FLASH

的帧频。用简单的话说,如果你的影片以FPS每秒12次运行,而你有个大的MC要从

左运动到右面且在24帧后重复它。如果你建立一段每2秒发生的间隔,大的MC将不会

精确的在2秒后重复运动而是稍微慢点,这样interval的调用将被关闭,因为flash

不能跟上这样的刷屏节奏。也就是说SetInterval将很精确的配合时间间隔,而不

管flash能否跟的上。因此,flash跟不上SetInterval的函数调用,这个函数将不会

被执行了。
应用:
因为SetInterval和onEnterFrameevent很相象。从技术的角度说,SetInterval可

以应用多次。当然和普通的方法有些不同,setInterval最好和count-down或其他

与时间相关的命令来应用。
displayTime = 30;
countDown = function(message){
displayTime–;
if (displayTime == 0){
clearInterval(timer);
SetInterval的用法详解 ajax setinterval用法
trace("Times Up!");
}
}
timer = setInterval(countDown, 1000);
这儿,每秒displayTime 将自减一直到为0。一旦为0,countDown函数将清除自身

的时间间隔,避免时间在为负数的情况下继续计算。
你得小心的使用这些计时用法,特别是在游戏里。知道了setInterval独立于时间轴

来运行,使用低性能电脑的人将因为机器缓慢的运行速度而不能完成指令。这中情

况下最好用基于时间轴的时间计算。
另一个setInterval的应用就是使得MC在独立于主时间轴的情况下运行。例如,它

将使得mc在12帧/秒的影片里以5帧/秒甚至30帧/秒的速度运行。通过和

updateAfterEvent()结合,clearInterval将在下一帧到来之前快速刷新屏幕来显示

一些东西。 例子:
fastFrames = function(){
myMovie_mc.nextFrame();
updateAfterEvent();
}
speedyID = setInterval(fastFrames, 40);
在四十毫秒的间隔内,myMovie_mc将以25帧/秒的速度运行。但是flash也有它自身

的限制。如果你设定的间隔太快让flash无法跟上,它将以自身最快的速度运行,你

的子函数将不能执行。
Loading是现实中应用setInterval的又一个例子。用它的理由是你要做个preload

的效果而不去混淆onEnterFrame事件。setInterval将通过自身,让你建立一个独

一无二的函数来检测swf被load了没有,然后播放。只有在这里,我们不用等待swf

所有字节都被载入,仅仅需要10帧,当他们可以提供时,开始播放。例子;
loadMovieNum("loadme.swf",1);
checkLoaded = function(){
if (_level1._framesloaded >= 10){
_level1.gotoAndStop(10);
clearInterval(intervalID);
}
}
intervalID = setInterval(checkLoaded, 50);
我们可以使用setInterval来模拟javascript中的setTimeout函数。例子;
_global.setTimeout = function(a,b,c, args){
// for a basic function call:
if (typeof arguments[0] == "function"){
args = arguments.slice(2);
var ID, func = function(){
a.apply(null, args);
clearInterval(ID);
}

ID = setInterval(func, b,args);

// for an object method call:
}else{
args = arguments.slice(3);
var ID, func = function(){
a.apply(a, args);
clearInterval(ID);
}
ID = setInterval(func, c, args);
}
return ID;
}
_global.clearTimeout = clearInterval;

结论:
尽管setInterval作为一个崭新的MX里的函数,并不能给予我们太多的激动。实际是

它是独立于帧的东西,可以抛弃一些flash影片里的累赘。无论如何,setInterval

是一个强劲的力量。远远不同于笨拙的flash5里的getTimer or date。现在,

flash里的命令可以在一小段时间里精确的更容易的运行。你使用的函数将更贴近你

的要求。

setInterval在preload里的应用举例:
loadMovie("movie1.swf","mc1");
loadMovie("movie2.swf","mc2");
loadMovie("movie3.swf","mc3");
loadMovie("movie4.swf","mc4");

loaderInterval=setInterval(loadChecker,100);

function loadChecker(){
dataLoaded=mc1.getBytesLoaded()+mc2.getBytesLoaded()+
mc3.getBytesLoaded()+mc4.getBytesLoaded();
dataTotal=mc1.getBytesTotal()+mc2.getBy[]tesTotal()+
mc3.getBytesTotal()+mc4.getBytesTotal();

if(dataLoaded>=dataTotal &&dataLoaded > 0)
{ mc1.gotoAndPlay(2);
mc2.gotoAndPlay(2);
mc3.gotoAndPlay(2);
mc4.gotoAndPlay(2);
clearInterval(loaderInterval);
}

//进度条的尺寸:
_root.loaderBar._xscale=(dataLoaded/dataTotal)*100;
}

  

爱华网本文地址 » http://www.413yy.cn/a/25101015/261208.html

更多阅读

CSOL咆哮怒焰M14EBR详解以及专业强化分析 csol咆哮怒焰强化

众所周知,咆哮怒焰系列是威力最大的突击步枪,其高威力以及不俗的精准度让它成为了一把点射神器。而强化系统更是让这把大威力步枪如虎添翼,咆哮怒焰可以算是最值得强化的几把枪支之一了。下面是这把枪的简略评测,以及它的强化详解。大家

篮球进阶教程–突破第一步的技术详解1 篮球突破第一步怎么练

。。各位过年好,这个文章本想年前完成,无奈工作太多了,过年没有休息,只好拖到现在了。以后写文章可能还是会很慢的,工作越来越忙了。至于评论,我还是会尽力的抽时间回复的,不过有些评论可能会等超过一个月才能有时间回复,希望各位理解,我们还

Linux下/etc目录下的文件详解二:group

具有某种共同特征的用户集合起来就是用户组(Group)。用户组(Group)配置文件主要就是/etc/group。 /etc/group文件内容包括用户和用户组,并且能显示出用户是归属哪个用户组或哪几个用户组,因为一个用户可以归属一个或多个不同的用户组;同一

二叉树的应用详解 二叉树遍历代码详解

概述:平衡树——特点:所有结点左右子树深度差≤1排序树——特点:所有结点“左小右大字典树——由字符串构成的二叉排序树判定树——特点:分支查找树(例如12个球如何只称3次便分出轻重)带权树——特点:路径带权值(例如长度)最优树——是带权路

声明:《SetInterval的用法详解 ajax setinterval用法》为网友黑白式格调分享!如侵犯到您的合法权益请联系我们删除