setIntrval動作的語法格式
setInterval動作的作用:間歇調(diào)用
是在播放動畫時,每隔一定事件就調(diào)用函數(shù),方法或者對象,可以使用本動作更新來自數(shù)據(jù)庫的變量,或者更新時間顯示
setInterval(function,interval[,arg1,arg2...argn])
setInterval(object,methoName,interval[,arg1,arg2,...argn])
第一種格式是標準動作面板中setInterval函數(shù)默認語法,第二種格式是在 專家模式動作中使用的方法
其中的functuon函數(shù)一個函數(shù)名或者一個對匿名函數(shù)的引用.object參數(shù)指定從object對象派生的對象,methodName制定object參數(shù)中藥調(diào)用的方法
interval制定對function或methodName調(diào)用兩次之間的時間枪汪,單位是毫秒梯皿。后面的arg1等是可選的參數(shù)暑诸,用于制定傳遞給function或是methodName的參數(shù)。
setInterval它設(shè)置的時間間隔小于動畫幀速(如每秒10幀峰搪,相當于100毫秒)岔冀,則按照盡可能接近interval的時間間隔調(diào)用函數(shù)。
而且必須使用updateAfterEvent動作來確保以足夠的頻率刷新屏幕概耻。如果interval大于動畫幀速使套,則只用在每次播放頭進入某一幀是才調(diào)用,以減小每次刷新屏幕的影響鞠柄。
下面的例子每隔1秒調(diào)用一次匿名函數(shù)侦高。
setInterval(function(){
console.log("每隔1秒鐘我就會顯示一次")},1000);
//這里的function(){}是沒有函數(shù)名的函數(shù)。成為匿名函數(shù)厌杜,后面的1000是時間間隔奉呛,單位是毫秒。
下面的例子為我們展示如何帶參數(shù)運行夯尽。
window.onload=function(){
function show1(){
console.log("每隔1秒顯示一次");
}
function show2(str){
console.log(str);
}
setInterval(show1,1000);
setInterval(show2,2000,"每隔2秒我就會顯示一次");
//后面表示的是調(diào)用的具體字符串
}
效果
上面已經(jīng)將函數(shù)的setInterval方法介紹了侧馅。
下面我們將介紹對象的setInterval方法。
首先呐萌,寫一個setInterval在動作中調(diào)用對象的方法的例子,該例子不需要傳遞參數(shù)谊娇。
myobj=new Object();//創(chuàng)建一個新的對象
myobj.interval=function){
trace("每隔1秒顯示一次");
}//創(chuàng)建對象的方法肺孤。
setInterval(myobj,"interval",1000);//設(shè)定時間間隔調(diào)用對象的方法罗晕。
接下來介紹如何傳遞參數(shù)。其實道理和函數(shù)的傳遞參數(shù)是一樣的赠堵。
myobj=new Object();
myobj.interval-function(str){
trace(str);
}
setInterval(myobj,"interval",2000," 每隔2秒我就會顯示一次");
注意小渊。要調(diào)用為對象定義的方法時,必須在專家模式中使用第二種語法格式茫叭。
這樣子的話呢酬屉,我們來作一個動態(tài)顯示時間的畫面∽岢睿可以用下面的代碼實現(xiàn)呐萨。
window.onload=function(){
setInterval(show,1000);
function show(){
time=new Date();
hour=time.getHours();
minu=time.getMinutes();
sec=time.getSeconds();
datetime=hour+":"+minu+":"+sec;
console.log(datetime);
}
}//這里的datetime是一個動態(tài)文本框的變量名字。
效果
這樣子呢莽囤,setInterval這個方法大家應(yīng)該學(xué)的很好了∶粒現(xiàn)在呢,我們學(xué)習clearInterval.
clearInterval動作
clearInterval動作的作用是清楚對setInterval函數(shù)的調(diào)用朽缎,它的語法格式如下
clearInterval(intervalid);
//intervalid是調(diào)用setInterval函數(shù)后返回的對象惨远。
下面舉一個簡單的例子。
function show(){
console.log("每隔一秒顯示一次");
}
var sh;
sh=setInterval(show,1000);
clearInterval(sh);
setInterval動作
作用:超時調(diào)用
它接受兩個參數(shù):要執(zhí)行的代碼和以毫秒表示的時間(即在執(zhí)行代碼前需要等待多少毫秒)话肖。其中第一個參數(shù)可以是一個包含JS代碼的字符串(就和在 eval() 函數(shù)中使用的字符串一樣)北秽,也可以是一個函數(shù)。第二個參數(shù)表示等待多長時間的毫秒數(shù)最筒,但經(jīng)過該事件后指定的代碼 不一定會執(zhí)行 贺氓。
這是因為JS是一個單線程序的解釋器,一定時間內(nèi)只能執(zhí)行一段代碼是钥,為了控制要執(zhí)行的代碼就有一個JS任務(wù)隊列掠归,這些任務(wù)會按照將他們添加到隊列的順序執(zhí)行。
setTimeout()的第二個參數(shù)告訴JS再過多長時間把當前任務(wù)添加到隊列中悄泥。若隊列為空虏冻,這段添加的代碼會立即執(zhí)行,若不為空弹囚,就要等前面的代碼執(zhí)行完再執(zhí)行
//不建議傳遞字符串厨相!可能會導(dǎo)致性能損失
setimeout("alert('hellow world!')",1000);
//推薦以匿名函數(shù)調(diào)用方式
var timeoutId = setTimeout(function(){
alert("hellow world!");
},1000);
clearTimeout(timeoutId);
調(diào)用setTimeout()之后,該方法會返回一個數(shù)值ID鸥鹉,ID是計劃執(zhí)行代碼的唯一標示符蛮穿,可以通過clearTimeout(ID)來取消 未執(zhí)行 的超時調(diào)用.
和setInterval進行對比
setTimeout()只執(zhí)行一次,如果要多次調(diào)用毁渗,可以使用setInterval(),或者自身多次調(diào)用setTimeout()