中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java動畫及自動瀏覽圖片程序怎么開發

發布時間:2021-12-30 17:12:29 來源:億速云 閱讀:153 作者:iii 欄目:編程語言

這篇文章主要講解了“Java動畫及自動瀏覽圖片程序怎么開發”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Java動畫及自動瀏覽圖片程序怎么開發”吧!

電影和電視的畫面可以理解為一種動畫顯示,它們一般以每秒24幀的速度顯示圖象,利用人眼的暫停效應,產生一個連續的動作顯示過程。因此,動畫的本質是運動的圖形,只要動畫的速度(幀速度)足夠快,則分散的的靜態圖形就會合并為一個連續運動的流程。

Java動畫的實現,首先用Java.awt包中Graphics類的drawImage()方法在屏幕畫出圖象,然后通過定義一個線程,讓該線程睡眠一段時間,到時后再切換成另外一幅圖象,如此循環,從而達到顯示動畫的目的。

1 有關概念、類及方法

1.1 線程

Java的重要特性之一是其支持多線程的程序設計。在傳統的程序設計中,要執行多任務是通過定時器中斷等方法,定時監控多個任務的執行情況,采用任務中斷切換的方式來輪換執行各個任務,從而達到多任務并發目的。這種方法一方面消耗了大量的內存空間和cpu資源,另一方面會帶來系統安全性的問題。而線程作為程序的一個執行流,在某一瞬間可被看成計算過程的一種狀態,它比進程更小,并發程度更高,因此也稱為輕進程。線程是cpu調度的基本單元,而進程是資源分配的基本單元,線程的引入可以提高系統的吞吐量、提高任務之間的通訊效率、有效利用系統資源。

?線程的創建

線程創建有兩種方法,一種是用new產生一個Thread類對象,另外一種方法是實現Runnable接口。在需要實現多繼承,并且又要建立多線程時,只能采用Runnable接口方法。我們這里采用第一種方法:

ThreadName=new Thread

?sleep(long)

讓線程睡眠一定時間不動作,參數單位為千分之一秒。

?suspend()

掛起線程,暫停其執行。

?resume()

喚醒掛起的線程。

1.2 ToolKit類

它提供了AWT與平臺相關類和無關類之間的鏈接,提供了幾種方法來訪問與設備相關的一些特征。如從URL或本地系統中檢索圖象、獲取屏幕的顯示特征等。在程序中定義一個ToolKit類:ToolKit=getToolKit();

1.3 MediaTracker類

提供了管理圖象文件加載的能力。方法StatusID(int id,boolean load)的作用是檢測加載圖象文件的狀態(ABORTED,COMPLETE,ERRORED,LOADING),當檢測到狀態為COMPLETE時,說明圖象加載完成。

2 文字動畫

文字動畫的實現程序比較簡單,首先,用new方法創建一個新進程,用drawString()方法在屏幕顯示相應文字,然后讓進程睡眠一定時間,時間到后,改變文字顯示位置,再重顯文字。其中包含一個邊界判斷,重設坐標的過程,如此往復實現文字動畫。程序運行后,在屏幕中央顯示"歡迎進入動畫世界!",每隔0.15秒向左移動一次,直到屏幕最左端又重新開始顯示。具體程序見程序1(Applet小程序)。

3 圖象動畫

圖象動畫的實現方法與文字相似,只不過定義了一個Image數組,運用getImage()方法裝載相應圖象文件到該數組中。程序運行后,可見到一個可愛的小精靈在作拋球動作。另外,基于程序交互性的考慮,增加了兩個事件的響應動作,一個是WINDOW_DESTROY,即關閉運行窗口,正常返回。另外一個是MOUSE_DOWN,當鼠標左按鈕按下時,暫停線程以便讓畫面靜止,再按一次左按鈕,恢復暫停線程,繼續顯示下一幅畫面。

如果將程序中的小精靈圖象文件換成圖片,并增加延遲時間,則可以實現圖片的自動切換,變為自動瀏覽圖片程序,源程序見程序2,

4 動畫質量的改善

上一程序的運行后,我們發現了兩個問題。第一是程序在圖象完全加載之前就開始顯示,出現切換過快現象。第二是畫面閃爍。

對于前一個問題,可以用Java.awt包中的MediaTracker類來解決,當StatusID()方法返回值為COMPLETE時,說明所有的圖象文件加載完畢,此時才開始顯示畫面。

第二個問題,解決起來要復雜一些。閃爍產生的原因是,在paint()方法中如果計算較為復雜,計算和繪制畫面的時間超過了屏幕的刷新周期,則幀的第一部分在一個刷新周期中繪制,其余部分在下一個、甚至更后的周期繪制,這樣,在幀的不同部分之間產生時間間隔,由此造成閃爍。解決途徑之一是重載update()方法,update()的缺省實現是清除原來背景,然后調用paint()方法。因此通過重載update(),只有在必要時才清除整個背景。

解決途徑之二是采用雙緩沖技術,雙緩沖技術是在后臺圖形區內創建一個圖形對象,將需要繪制的圖象繪于其上,然后傳給paint()方法,由paint()方法繪于前臺,同時,后臺圖形緩沖區進入下一幀圖象的準備。圖1為雙緩沖技術示意圖。

感謝各位的閱讀,以上就是“Java動畫及自動瀏覽圖片程序怎么開發”的內容了,經過本文的學習后,相信大家對Java動畫及自動瀏覽圖片程序怎么開發這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

巴里| 阳西县| 兖州市| 忻州市| 芮城县| 自贡市| 抚远县| 塔城市| 宝丰县| 遵化市| 灵川县| 枣强县| 丰顺县| 嘉峪关市| 江永县| 神木县| 苍南县| 衡东县| 泊头市| 长泰县| 黄冈市| 巫山县| 奉节县| 天峨县| 老河口市| 芒康县| 赫章县| 洛浦县| 子长县| 进贤县| 吉木乃县| 黑河市| 德昌县| 许昌市| 柞水县| 曲阜市| 温泉县| 永兴县| 双柏县| 达拉特旗| 浦县|