西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁編程開發(fā)javascript|JQuery → JavaScript版變速齒輪開發(fā)手記

JavaScript版變速齒輪開發(fā)手記

前往專題相關(guān)軟件相關(guān)文章發(fā)表評論 來源:EtherDream時間:2012/5/29 16:53:15字體大。A-A+

作者:EtherDream點擊:24次評論:0次標(biāo)簽: 變速齒輪

NB變速齒輪1.0 綠色去廣告版
  • 類型:游戲其他大。692KB語言:中文 評分:2.0
  • 標(biāo)簽:
立即下載

 在JS開發(fā)中經(jīng)常會用到定時器,尤其是一些動畫特效,小游戲等完全依靠定時器驅(qū)動。

  要讓動畫跑得更流暢,我們常常使用較高的刷新率,例如60fps。由于每一幀的間隔非常短,很難看清楚每一幀具體的運行情況。

  有時整體上看似乎一切良好,但如果放慢定時器的速度,卻會發(fā)現(xiàn)其中有部分幀或因代碼里的小問題,并沒有按我們想象那樣顯示。由于播放的非常快,這些潛在的小問題都掩蓋了。

  為了方便動畫腳本的觀察和調(diào)試,我們嘗試用js模仿一個類似windows下經(jīng)典的應(yīng)用程序:變速齒輪,能即時修改系統(tǒng)時鐘的運行頻率!這聽起來似乎很神奇吧~其實原理并不復(fù)雜。

  和傳統(tǒng)的變速齒輪運行機制一樣,我們使用鉤子程序勾住默認(rèn)那幾個定時器相關(guān)的API —— setTimeout, setInterval, clearTimeout, clearInterval。當(dāng)然,所謂的鉤子程序,無非就是預(yù)先保存原來的API引用,接著用自己的程序覆蓋他們。這樣我們就可以攔截之后的定時器調(diào)用,然后根據(jù)虛擬時鐘的速率,自己維護回調(diào)隊列,于是就產(chǎn)生了定時器變速的效果。如果同步上再嚴(yán)密點,甚至還可以覆蓋Date對象,讓時間的流逝速度都隨之而變!

  當(dāng)然,有不少問題仍然難以解決的。

  時鐘頻率被加快后,每一幀的時間間隔被大幅縮短,甚至小于1ms。而js定時器頻率眾所周知,遠達不到這樣的精度。于是只能用“跳幀”來解決這個問題。例如,一個2ms的定時器,理論上應(yīng)該每2ms觸發(fā)一次,但某個瀏覽器最短只支持16ms的間隔,那么每次定時器觸發(fā)內(nèi)循環(huán)調(diào)用 16/2 = 8次回調(diào),來彌補頻率上的不足。但由于這8次回調(diào)是在同個事件里一口氣執(zhí)行的,所以前7次的界面操作都不會立即渲染出來,只有第8次的操作才會有所表現(xiàn),所以就有了“跳”的感覺。

  但是這個方法只能解決 setInterval 的定時器,因為它的時間間隔以及回調(diào)都是固定的。對于 setTimeout 這樣每次延時不確定的,甚至還無法確定下一幀是否接著運行,跳幀機制就有些無從為力了。

  不過只實現(xiàn)一個基本功能的還是比較容易的:

  JsGear,就是根據(jù)這個思路實現(xiàn)的 JavaScript 變速齒輪插件,對時間相關(guān)的API都進行了嚴(yán)密的封裝。因為它完全是用js/css制作的,所以不依賴任何插件,引入頁面就可以使用。

  為了讓使用更快捷,這兩天換了一個新概念的操作界面,并且支持IE6+, FireFox, Chrome, Safari, Opera瀏覽器,以及Quirks模式。

  測試Demo:  http://www.etherdream.com/JSGear/demo.html

  

  

  在自己的頁面里測試很簡單,把jsgear.js插入到所有的腳本之前就可以。這里上傳了一份到博客附件里,復(fù)制下面代碼到自己的頁面內(nèi)即可使用:

  <scrpt src="http://files.cnblogs.com/jsapp/jsgear.js"></script>

    當(dāng)然,目前還只是演示版本,實現(xiàn)了基本功能,還有不少小問題。大家要是有什么好多思路和建議,歡迎探討。

    KISSsoft齒輪系統(tǒng)
    (117)KISSsoft齒輪系統(tǒng)
    齒輪系統(tǒng)設(shè)計是專門針對的齒輪系統(tǒng)設(shè)計分析相關(guān)的應(yīng)用軟件,由蘇州科士索福特精密科技有限公司出品的,齒輪系統(tǒng)設(shè)計軟件在中國的銷售和技術(shù)支持,其在齒輪及齒輪傳動方面強大的國際工程背景,確保了其在行業(yè)內(nèi)的技術(shù)領(lǐng)先地位。軟件是齒輪設(shè)計齒輪傳動系統(tǒng)設(shè)計及軸軸承設(shè)計的專業(yè)軟件工具,也是全球唯一一款正向齒輪設(shè)計軟件,它允許你從單個零部件一步一步完成整個齒輪箱的系統(tǒng)建模。同時也是世界上功能最強覆蓋面最寬技術(shù)最深實用...更多>>
    變速齒輪
    (14)變速齒輪
    變速齒輪是什么變速齒輪原指一種機械裝置。現(xiàn)多指操作系統(tǒng)中改變游戲速度的程序。變速齒輪幾乎可以改變?nèi)魏斡螒虻乃俣取3擞螒,它也能改變(nèi)魏螘r間相關(guān)的程序的速度,例如視頻播放網(wǎng)頁等。為什么有的游戲不能用變速齒輪操作系統(tǒng),會有少部分游戲不能正常運行。出于安全方面的考慮非常多,很多東西默認(rèn)是不打開的。也許就是這樣一個特性造成你說的原因。游戲變速齒輪哪個好其實很多出名的游戲修改其中都內(nèi)含變速齒輪插件,西西玩...更多>>

    相關(guān)評論

    閱讀本文后您有什么感想? 已有人給出評價!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評論

    最新評論

    發(fā)表評論 查看所有評論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)