在本AS3.0教程中我們將學(xué)習(xí)到間隔循環(huán)的三種表現(xiàn)方式,希望對(duì)朋友們有所幫助~~ 如果想使動(dòng)畫不依賴于幀頻,可使用3種方法:
1、setlnterval()函數(shù) setlnterval()函數(shù)作用是每隔一定的時(shí)間,就調(diào)用函數(shù)
setlnterval()函數(shù)的形式為:
setlnterval(函數(shù)名,時(shí)間間隔,函數(shù)參數(shù));
函數(shù)名是自定義的函數(shù)的名,時(shí)間間隔為毫秒,函數(shù)參數(shù)是自定義函數(shù)的參
下面制作一個(gè)計(jì)時(shí)器:
//時(shí)間的初始值
var t:int;
//定義一個(gè)無參函數(shù)
function time()
{
//輸出時(shí)間
trace(++t / 10);
}
//每隔0.1秒調(diào)用一次函數(shù)
setInterval(time,100);
測試上面的代碼,可在輸出面板中看到時(shí)間以0.1秒在遞增。
提示:setlnterval()函數(shù)每隔0.1秒調(diào)用一次函數(shù),變量t以加1的方式進(jìn)行遞增,t除以10后可表示時(shí)間。
下面的代碼調(diào)用一個(gè)有參函數(shù):
//定義一個(gè)有參函數(shù)
function test(message)
{
trace(message);
}
//每隔500毫秒調(diào)用一次函數(shù),輸出“調(diào)用函數(shù)”
setInterval(test,500,"調(diào)用函數(shù)");
清除setInterval()的調(diào)用,使用clearInterval()函數(shù)
提示:要及時(shí)清除setInterval()函數(shù)的調(diào)用,否則會(huì)導(dǎo)致setInterval()函數(shù)的重復(fù)調(diào)用。
2、setTimeout()函數(shù) setTimeout()函數(shù)的使用方法與setlnterval()函數(shù)的使用方法相同,也是每隔一定時(shí)間就調(diào)用函數(shù)。
setTimeout()函數(shù)的一般形式為:
setTimeout(函數(shù)名,時(shí)間間隔,函數(shù)參數(shù));
調(diào)用一個(gè)無參函數(shù):
//自定義函數(shù),輸出信息
function test()
{
trace("函數(shù)調(diào)用");
}
//每隔1000毫秒調(diào)用一次test(),輸出信息。
setTimeout(test,1000);
清除setTimeout()的調(diào)用,使用clearTimeout()函數(shù)。
3、Timer類 AS3.0新增了Timer類來實(shí)現(xiàn)間隔調(diào)用程序,Timer類封裝了許多屬性、方法和事件。
使用Timer類不會(huì)像setInterval()重復(fù)積累調(diào)用,減少了出錯(cuò)的幾率,可以自定義間隔時(shí)間,實(shí)現(xiàn)與幀頻的脫離,是制作間隔效果的首選。
Timer類的構(gòu)造函數(shù)有兩個(gè)參數(shù),第1個(gè)是以毫秒為單位的間隔數(shù)字,第2個(gè)是重復(fù)調(diào)用的次數(shù)。
創(chuàng)建Timer類的實(shí)例:
var myTimer:Timer = new Timer(1000,3);
在構(gòu)造函數(shù)Timer()中,間隔時(shí)間為1000毫秒,重復(fù)次數(shù)為3次,調(diào)用從數(shù)字1開始,向上遞增,當(dāng)次數(shù)等于3時(shí),停止調(diào)用。
Timer類有4個(gè)屬性,兩個(gè)為只讀屬性,兩個(gè)為讀寫屬性:
running屬性:是只讀屬性,表示調(diào)用是否進(jìn)行,如果處于調(diào)用狀態(tài),running的值為true,否則為false。currentCount屬性:是只讀屬性,表示當(dāng)前調(diào)用的次數(shù)。
delay屬性:是讀寫屬性,表示間隔調(diào)用的時(shí)間。
repeatCount屬性:是讀寫屬性,表示重復(fù)調(diào)用的次數(shù)。
Timer類有3個(gè)方法可調(diào)用:
start()方法:用于啟動(dòng)調(diào)用
spop()方法:用于停止調(diào)用
reset()方法:用于重置調(diào)用
Timer類有兩個(gè)事件,當(dāng)開始調(diào)用時(shí)會(huì)發(fā)生timer事件,調(diào)用結(jié)束時(shí)會(huì)發(fā)生timerComplete事件。這兩個(gè)事件都是TimerEvent類的屬性,事件名分別為Timer.TIMER和Timer.TIMER_COMPLETE。
下面是制作計(jì)時(shí)器的實(shí)例:
1、新建Flash文檔
2、在圖層1的第1幀,創(chuàng)建一個(gè)實(shí)例名為time的動(dòng)態(tài)文本實(shí)例。
3、添加as圖層,單擊第1幀,打開動(dòng)作面板輸入代碼:
//定義時(shí)間間隔
var interval:uint = 100;
//重復(fù)次數(shù)
var repeat:uint = 120;
//創(chuàng)建實(shí)例
var myTimer:Timer = new Timer(interval,repeat);
//注冊(cè)timer事件
myTimer.addEventListener(TimerEvent.TIMER,timerHandler);
//啟動(dòng)計(jì)時(shí)器
myTimer.start();
//定義事件的接收函數(shù)
function timerHandler(event:TimerEvent):void
{
//得到Timer類的實(shí)例
var timer:Timer = event.target;
//計(jì)算秒數(shù)
var t:Number = timer.currentCount / 10;
//保留1位小數(shù)
time.text = t.toFixed(1);
}
每100毫秒調(diào)用函數(shù)一次,即間隔0.1秒,把次數(shù)除以10得到秒數(shù)。
4、測試影片(在測試時(shí)選擇【文件】【發(fā)布設(shè)置】選【Flash】選項(xiàng)卡,選ActionScript3【設(shè)置】把嚴(yán)謹(jǐn)模式的勾去掉)。