亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        AS3中四種循環(huán)執(zhí)行任務(wù)的方法選擇策略探析

        2014-07-28 05:45:30秦偉
        電腦知識與技術(shù) 2014年18期
        關(guān)鍵詞:調(diào)用間隔代碼

        秦偉

        摘要:在編寫Actionnscrip3.0腳本中,經(jīng)常涉及到間隔循環(huán)執(zhí)行某些任務(wù)的情況,通??梢允褂肨imer對象、eventFrame事件、setInterval()函數(shù)以及setTimeout()函數(shù)4種形式實(shí)現(xiàn)循環(huán)執(zhí)行任務(wù)的功能。文章通過分析四種形式的運(yùn)行機(jī)制及異同點(diǎn),實(shí)例解析其功能為使用和選擇各種方法來為編程實(shí)踐提供參考。

        關(guān)鍵詞:Actionnscrip;循環(huán);定時

        中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2014)18-4305-02

        Strategy of Selecting Four Cycle Task Execution Method in AS3

        QIN Wei

        (College of Education Science, Tongren University, Tongren 554300, China)

        Abstract: When the Actionnscrip3.0 script is programmed, we often face conditions of interval loop to perform certain tasks, you can often use 4 kinds form of the Timer object, eventFrame events, setInterval () function and setTimeout () function to achieve function of circular task execution. Through four forms of the analysis of the operation mechanism and the differences and similarities, example analysis for its function provide reference for programming practice as the selection and use of various methods.

        Key words: Actionnscrip; Loop; Time

        1 概述

        Actionnscrip3.0(簡稱As3)是一種強(qiáng)大的面向?qū)ο缶幊陶Z言,設(shè)計 As3 的意圖是創(chuàng)建一種適合快速地構(gòu)建效果豐富的互聯(lián)網(wǎng)應(yīng)用程序語言,這種語言以支持類型安全、代碼維護(hù)輕松、編寫簡單、響應(yīng)高效等優(yōu)點(diǎn)已成為 Web 體驗(yàn)的重要部分[1]。在使用Flash軟件進(jìn)行設(shè)計與制作過程中經(jīng)常涉及到使用As3腳本語言來實(shí)現(xiàn)間隔循環(huán)執(zhí)行某一任務(wù)的代碼設(shè)計,由于Flash軟件本身的特性,我們習(xí)慣采用的循環(huán)語句while,for等語句來實(shí)現(xiàn)這些需求是不太容易的,所以了解Timer對象、eventFrame事件、setInterval()函數(shù)以及setTimeout()函數(shù)四種形式的原理機(jī)制及特性對實(shí)現(xiàn)循環(huán)執(zhí)行任務(wù)的功能是非常重要的。

        2 運(yùn)行原理解析

        2.1 Timer對象

        通過構(gòu)造Timer對象的實(shí)例的同時設(shè)置好delay,repeatCount兩個參數(shù)來設(shè)置延遲時間和重復(fù)次數(shù),delay的設(shè)置以毫秒計,設(shè)置好這兩個參數(shù)后就會按照設(shè)置的時間延遲定時循環(huán)執(zhí)行已編好的代碼。如:

        var timer:Timer = new 函數(shù)名(時間間隔,重復(fù)次數(shù));

        timer.addEventListener(TimerEvent.TIMER, 函數(shù)名);

        function函數(shù)名(event:TimerEvent):void{函數(shù)體}

        調(diào)用start()方法啟動timer實(shí)例:timer.start();

        2.2 eventFrame事件

        Event對象中的ENTER_FRAME公共常量實(shí)現(xiàn)該功能主要是通過幀頻來實(shí)現(xiàn)。每當(dāng)Flash運(yùn)行器執(zhí)行一次預(yù)定屏幕更新檢查的時候它調(diào)度Event.ENTER_FRAME事件。注冊以接收Event.ENTER_FRAME通知的任何函數(shù)都被反復(fù)執(zhí)行。由任何Event.ENTER_FRAME事件監(jiān)聽器做出的可見變化在它退出之前被描繪,這就是Event.ENTER_FRAME做動畫的原理。如:

        stage.addEventListener(Event.ENTER_FRAME, 函數(shù)名);

        function函數(shù)名(e:Event):void {函數(shù)體}

        2.3 setInterval()函數(shù)

        setInterval動作的作用是在播放動畫的時,每隔一定時間就調(diào)用函數(shù),方法或?qū)ο?。setInterval有兩種語法格式。

        格式一:setInterval(函數(shù)名,時間間隔[arg1,arg2,..argn]), arg1,arg2,..argn為傳遞給函數(shù)的參數(shù)。如:

        function 函數(shù)名(){函數(shù)體} setInterval(函數(shù)名,時間間隔);

        格式二:setInterval(對象名,方法名,時間間隔[,arg1,arg2,.....argn]),其中對象名參數(shù)指定從Object對象派生的對象,方法名制定object參數(shù)中要調(diào)用的方法。arg1,arg2,..argn為傳遞給函數(shù)的參數(shù)。如:

        myobj=new Object(); myobj.interval=函數(shù)名(){函數(shù)體}

        setInterval(myobj,"interval",時間間隔);

        2.4 setTimeout()函數(shù)

        setTimeout()函數(shù)的使用方法與setlnterval()函數(shù)的使用方法相同,在指定的延遲(以毫秒為單位)后運(yùn)行指定的函數(shù)。setTimeout()函數(shù)的一般形式為:endprint

        setTimeout(函數(shù)名,時間間隔,函數(shù)參數(shù));

        function 函數(shù)名() {函數(shù)體 }

        setTimeout(函數(shù)名,時間間隔);

        3 四種形式的異同點(diǎn)與選擇策略

        1)對于一般的應(yīng)用程序,當(dāng)幀代碼量不大,執(zhí)行代碼的時間小于幀頻且執(zhí)行幀代碼的時間都小于Timer對象、eventFrame事件、setInterval()函數(shù)以及setTimeout()函數(shù)方法設(shè)定的時間間隔時,你選用那一種方法都是可以的,如下面實(shí)例中雪花的下落是間隔執(zhí)行的,通過四種方法調(diào)用Snow類實(shí)現(xiàn)下雪效果:首先編寫Snow.as的類文件,代碼如下:

        package{ import flash.display.*; import flash.events.*;

        public class Snow extends Sprite{ public function Snow(){函數(shù)體}},

        在Snow.as類文件的相同目錄下,編寫xh.fla文檔,在xh.fla文檔的第一幀編寫幀代碼都能實(shí)現(xiàn)調(diào)用上面的Snow類實(shí)現(xiàn)下雪效果,且他們的效果及執(zhí)行時間沒有多大區(qū)別。四種方法編寫的代碼如下:

        使用Timer對象實(shí)現(xiàn):

        import Snow; var timer:Timer = new Timer(1,1000); timer.start();

        timer.addEventListener(TimerEvent.TIMER,函數(shù)名);

        function函數(shù)名(e:TimerEvent):void

        {var xh:Snow=new Snow(); addChild(xh); }

        使用eventFrame事件實(shí)現(xiàn):

        import Snow; stage.addEventListener(Event.ENTER_FRAME,函數(shù)名);

        function 函數(shù)名(e:Event):void {var xh:Snow=new Snow(); addChild(xh);}

        使用setInterval()函數(shù)實(shí)現(xiàn):

        import Snow; setInterval(函數(shù)名,50);

        function 函數(shù)名():void { var xh:Snow=new Snow(); addChild(xh); }

        使用setTimeout()函數(shù)實(shí)現(xiàn):

        import Snow; setTimeout (函數(shù)名,50);

        function 函數(shù)名():void { var xh:Snow=new Snow(); addChild(xh); }

        2) 盡管Timer、setTimeout()函數(shù)、setInterval()函數(shù)看似提供了一個完全隨意的方式來在一個間隔時間之后執(zhí)行一個函數(shù),但它們?nèi)稳灰蕾囉贔lash運(yùn)行器的幀速率。對于setTimeout()函數(shù)、setInterval()函數(shù)如果時間間隔大于Flash運(yùn)行器的幀速率,會以幀速率調(diào)用函數(shù)。對于Timer當(dāng)一個TimerEvent.TIMER事件設(shè)置為運(yùn)行得比幀速率更不頻繁的時候,它將執(zhí)行于下一次預(yù)定屏幕更新的時間間隔之后。為了請求更新于下次預(yù)定更新前,必須使用TimerEvent類的實(shí)例方法updateAfterEvent()。所以在基于速度的動畫制作選用Timer、setTimeout()函數(shù)、setInterval()函數(shù)來實(shí)現(xiàn)間隔執(zhí)行任務(wù)是沒有多大區(qū)別的,在高版本的腳本中多選用Timer對象來實(shí)現(xiàn)該功能。

        3) 在必須使程序內(nèi)容的顯示同步于手工創(chuàng)建的基于幀內(nèi)容的顯示的基于內(nèi)容的腳本設(shè)計中,多使用eventFrame事件。且在Flash運(yùn)行器中的幀速率的變動當(dāng)做是可以接受的時候,也多使用eventFrame事件。因?yàn)槭褂没趀ventFrame事件的動畫代碼一般要比基于Timer、setTimeout()函數(shù)、setInterval()函數(shù)更簡單和使用較少的內(nèi)存。

        4)特別對于Timer對象,避免使用單個的Timer對象來移動單個的顯示對象。只要有可能,使用一個單個的Timer對象來編制所有的動畫。當(dāng)然如果你想在不同時間更新不同的對象,單獨(dú)的Timer對象可能更合適。

        5) 四種方式執(zhí)行間隔循環(huán)后都應(yīng)用相應(yīng)的方式結(jié)束執(zhí)行任務(wù),要不會出現(xiàn)內(nèi)存被大量占用,函數(shù)重復(fù)調(diào)用等問題使動畫運(yùn)行不流暢。一般結(jié)束Timer對象的方法用Timer實(shí)例的stop()方法;結(jié)束eventFrame事件用removeEventListener()函數(shù)來刪除;清除setInterval()的調(diào)用,使用clearInterval()函數(shù);清除setTimeout()的調(diào)用,使用clearTimeout()函數(shù)。

        4 結(jié)束語

        總之,對于任何一門語言設(shè)計代碼時都應(yīng)了解該語言的一些基本語法,各種語句及函數(shù)的用法。在As3中對Timer對象、eventFrame事件、setInterval()函數(shù)以及setTimeout()函數(shù)的原理機(jī)制及各種方法及特征有一定的認(rèn)識才能在設(shè)計間隔循環(huán)執(zhí)行任務(wù)時使自己編寫的腳本更簡單、高效。

        參考文獻(xiàn):

        [1] (美)溫妮,著,羅楷,譯.ActionScript 3.0基礎(chǔ)教程[M].北京:人民郵電出版社,2012:11-20.endprint

        猜你喜歡
        調(diào)用間隔代碼
        間隔問題
        核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
        間隔之謎
        LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
        創(chuàng)世代碼
        動漫星空(2018年11期)2018-10-26 02:24:02
        創(chuàng)世代碼
        動漫星空(2018年2期)2018-10-26 02:11:00
        創(chuàng)世代碼
        動漫星空(2018年9期)2018-10-26 01:16:48
        創(chuàng)世代碼
        動漫星空(2018年5期)2018-10-26 01:15:02
        基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
        上樓梯的學(xué)問
        精品国产高清一区二区广区| 国产精品国产亚洲精品看不卡| 大地资源在线观看官网第三页| 亚洲综合色丁香婷婷六月图片| 蜜臀aⅴ永久无码一区二区| 日韩一级精品视频免费在线看| 美女mm131爽爽爽| 女人夜夜春高潮爽a∨片传媒| 亚洲国产高清美女在线观看 | 亚洲AV电影天堂男人的天堂| 蜜臀av国内精品久久久人妻| 精品少妇一区二区三区免费 | 少妇被爽到高潮喷水免费福利| 日韩av激情在线观看| 久久天天躁狠狠躁夜夜爽| 果冻国产一区二区三区| 日本不卡一区二区三区在线视频 | 免费国产调教视频在线观看| 粉嫩的极品女神尤物在线| 亚洲中文字幕无码不卡电影| 久久天天躁夜夜躁狠狠躁2022| 亚洲国产一区二区三区,| 偷拍一区二区盗摄视频| 又大又粗又爽的少妇免费视频| 含羞草亚洲AV无码久久精品| 亚洲女同人妻在线播放| 女人的精水喷出来视频| 久久无码av三级| 狠狠亚洲婷婷综合久久久| 亚洲国产精品情侣视频| 狠狠噜天天噜日日噜无码| 日本在线视频网站www色下载| 免费人成网在线观看品观网| 日本一本免费一二区| 久久精品国产亚洲av忘忧草18| 精品久久久久久国产潘金莲| 亚洲一区二区三区地址| 亚洲av麻豆aⅴ无码电影| 依依成人影视国产精品| 亚洲天堂av一区二区三区不卡| 国产在线精品一区二区中文|