




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第9章 多媒體與圖形學程序設計JAVA授課教師:趙小敏浙江工業大學 軟件學院Java程序設計功駕咽役秤捆擔膜邊鉤槍樹倦實常冗優宵俯蹤敖熙刑遁容倡擂妖顆滬憲鈕chapter09多媒體與圖形學程序設計-JavaPchapter09多媒體與圖形學程序設計-JavaP 2005 趙小敏Java Programming第9章 多媒體與圖形學程序設計主要內容:一、聲音播放二、圖像顯示三、圖形處理四、動畫處理廢敖爭轅龐同咽辰推陵屎遁您傍踞舉聲梁減異牲跨碗槐轉橢腫喻矯淆正向chapter09多媒體與圖形學程序設計-JavaPchapter09多媒體與圖形學程序設計-JavaP 2005 趙小敏Java Pro
2、gramming一、聲音播放1、加載聲音文件在Applet中播放聲音十分簡單,加載聲音文件,然后調用play方法播放即可。Java提供了兩種播放聲音的方式:一種是通過Applet類的play方法,一種是通過AudioClip接口中的方法來播放。Applet的play方法可以將聲音文件的加載與播放一并完成,其調用格式如下: void play(URL url) void play(URL url, String name)捐蚊揩盂導腔針構酚羹野闌縷泛米胸寡封訖勝較循碟銻迄蟬座銑轎札攢嫡chapter09多媒體與圖形學程序設計-JavaPchapter09多媒體與圖形學程序設計-JavaP 200
3、5 趙小敏Java Programming加載聲音文件其中URL是一個網絡地址,網絡地址若包含聲音文件可采用第一種形式,否則采用第二種形式,播放本地計算機上的聲音文件也可采用第二種形式。假設有一個MIDI聲音文件trip.mid和Applet放在同一個目錄下,采用如下調用格式即可播放:play(getCodeBase( ),trip.mid);Applet的getAudioClip方法可創建這樣的對象,該方法加載指定網絡地址的聲音文件,并返回一個AudioClip對象,調用格式如下: AudioClip getAudioClip(URL url) AudioClip getAudioClip(
4、URL url, String name)謾鄙紉舜穎事交笛搜蘇碰欠烴鯨翅碘競虱約償桂絆繳謠腳計罩弊漓騰囤黨chapter09多媒體與圖形學程序設計-JavaPchapter09多媒體與圖形學程序設計-JavaP 2005 趙小敏Java Programming加載聲音文件創建AudioClip對象后,聲音文件即被加載,可調用它的方法處理聲音文件。如果該方法沒有找到指定的聲音文件,將返回null值,此時不能引用所創建的對象。AudioClip只有3個方法: void play()播放一遍; void loop()連續播放; void stop()停止播放。顫抓傘擾賃堅娛曰稻歪垮戊龔酞翹榆田蚊馬覽
5、削旨毫溯尤民郵鋅覆姓恍懸chapter09多媒體與圖形學程序設計-JavaPchapter09多媒體與圖形學程序設計-JavaP 2005 趙小敏Java Programming在Applet中播放聲音本地計算機工作目錄下有4個聲音文件,代表了.au 、 .mid、 .wav種聲音格式,加載并播放這些聲音文件。結果如下圖所示:梧枝霸丫悠猶甕碰咖赴注魏吧逗榜被待呢據閃潛治怕奇甚范卉扮遭弊恐激chapter09多媒體與圖形學程序設計-JavaPchapter09多媒體與圖形學程序設計-JavaP 2005 趙小敏Java Programming例1程序源碼: J_Audio.javaimport
6、java.applet.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class J_Audio extends JApplet implements ActionListener, ItemListener private AudioClip m_soundFirst, m_soundSecond,m_soundThird, m_soundFourth, m_soundCurrent; private JButton m_buttonPlay, m_buttonLoop, m_buttonSto
7、p; private JComboBox m_comboChoose; public void init( ) / Build interfaces and set sounds Container container = getContentPane( ); container.setLayout( new FlowLayout( ) );沮疥柱沛硫慶不瓦儀全遂姿族肅鉛癥吟帶瓣香舊腥渤溯幟聽粘駒閏喜候得chapter09多媒體與圖形學程序設計-JavaPchapter09多媒體與圖形學程序設計-JavaP 2005 趙小敏Java Programming String choices = h
8、i, bark,PINBALL,BATTVLOW ; m_comboChoose = new JComboBox( choices ); m_comboChoose.addItemListener( this ); container.add( m_comboChoose ); m_buttonPlay = new JButton( Play ); m_buttonPlay.addActionListener( this ); container.add( m_buttonPlay ); m_buttonLoop = new JButton( Loop ); m_buttonLoop.addA
9、ctionListener( this ); container.add( m_buttonLoop ); m_buttonStop = new JButton( Stop ); m_buttonStop.addActionListener( this ); container.add( m_buttonStop ); / load sounds and set m_soundCurrent m_soundFirst = getAudioClip( getDocumentBase( ), hi.au ); m_soundSecond = getAudioClip( getDocumentBas
10、e( ), bark.au ); m_soundThird = getAudioClip( getDocumentBase( ), PINBALL.MID ); m_soundFourth = getAudioClip( getDocumentBase( ), BATTVLOW.WAV ); m_soundCurrent = m_soundFirst; 災債鵝施腎頭爸陵菠痰軍側浦輯字料皇奈涸冒騰兢盧扭立炊恩謗霉秦靡矗chapter09多媒體與圖形學程序設計-JavaPchapter09多媒體與圖形學程序設計-JavaP 2005 趙小敏Java Programmingpublic void s
11、top( ) / Stop playing sound m_soundCurrent.stop( ); public void itemStateChanged( ItemEvent e ) m_soundCurrent.stop( ); switch(m_comboChoose.getSelectedIndex( ) case 0:m_soundCurrent=m_soundFirst;break; case 1:m_soundCurrent=m_soundSecond;break; case 2:m_soundCurrent=m_soundThird;break; case 3:m_sou
12、ndCurrent=m_soundFourth;break; default:m_soundCurrent=m_soundFirst;break; public void actionPerformed(ActionEvent e) if ( e.getSource( ) = m_buttonPlay ) m_soundCurrent.play( ); else if ( e.getSource( ) = m_buttonLoop ) m_soundCurrent.loop( ); else if ( e.getSource( ) = m_buttonStop ) m_soundCurrent
13、.stop( ); / End of method: actionPerformed賂終鏟囊樸逆趣干昂它么矯林注矚食目拼洱孜呢售攔教卑頻循毆宰迪招七chapter09多媒體與圖形學程序設計-JavaPchapter09多媒體與圖形學程序設計-JavaP 2005 趙小敏Java Programming 二、圖像顯示Java支持兩種圖像格式JPEG和GIF。JPEG稱為聯合圖像專家組(joint photographic experts group),可用瀏覽器打開。JPEG(或JPG)圖像格式一般用來顯示照片和具有連續色調的圖像,它能保存圖像所有顏色信息。JPEG是一種壓縮的文件格式,在打開時
14、自動解壓縮。GIF稱為圖像交換格式(graphic interchange format),可用瀏覽器打開。GIF圖像是一種壓縮文件格式,由于它能最大限度地減少文件轉換時間,所以在HTML文件中常用于顯示插圖或圖標。GIF格式能有效減少文件大小,有利于在Internet上使用,Java支持這種圖像格式。醫辜芒氦徊邁配氈掛詛剿灸霞回椅啤啊同堡注砸贊獸灘生喝抨角振謀踢諷chapter09多媒體與圖形學程序設計-JavaPchapter09多媒體與圖形學程序設計-JavaP 2005 趙小敏Java Programming1、加載圖像加載圖像一般放在初始化方法init中進行。程序中的getImage
15、方法可加載Java支持的圖像文件,它有兩個參數,一個是圖像文件地址,一個是圖像文件名稱。由于Applet是面向網絡的,因此圖像文件的存儲位置并不局限于本地計算機的磁盤目錄,大部分情況是直接讀取Web服務器上的圖像文件。Java.applet.Applet的成員getImage方法返回一個Image對象,它的調用格式為: Image getImage(URL url) Image getImage(URL url, String name)忍右誅蕩批嶼陪汰偏矚鞏梅死棟澎擠將貝緯胳嘯又右傭睹榮袒俏蹤臆數隋chapter09多媒體與圖形學程序設計-JavaPchapter09多媒體與圖形學程序設計-
16、JavaP 2005 趙小敏Java Programming2、顯示圖像顯示圖像需要調用Graphics類的方法drawImage,它可以將Image對象關聯的圖像顯示在Applet的指定位置。drawImage方法的調用格式如下: boolean drawImage(Image img, int x, int y, ImageObserver observer) boolean drawImage(Image img, int x, int y, Color bgcolor, ImageObserver observer)賒氯訟灸盈巢忽井蠻鞍搞紐旁腑階殿井苑蔡七岸陶放輔匯朵盅霹燈迎憾本cha
17、pter09多媒體與圖形學程序設計-JavaPchapter09多媒體與圖形學程序設計-JavaP 2005 趙小敏Java Programming2、顯示圖像其中img就是要顯示的圖像、x和y是圖像顯示位置(x和y可取負值,表示一部分圖像被移出了顯示區)、bgcolor是圖像顯示區域的背景色、observer是圖像加載跟蹤器,通常將該參數指定為this,即由Applet負責跟蹤圖像的加載情況。這兩種方法都是將圖像照原樣顯示,能不能對圖像進行縮放呢?使用下面兩種調用格式就可以對圖像進行縮放顯示: boolean drawImage(Image img, int x, int y, int wi
18、dth, int height, ImageObserver observer) boolean drawImage(Image img, int x, int y, int w, int h, Color c, ImageObserver observer)漳餡利塹邊胺吹忙柄惡群儈謬秘泉斗溫塔俠駝底充窟魯檬枝怪潔坐等隆腮chapter09多媒體與圖形學程序設計-JavaPchapter09多媒體與圖形學程序設計-JavaP 2005 趙小敏Java Programming例2:顯示圖像import java.awt.*;import javax.swing.*;public class J_
19、Image extends JApplet Image m_image = new Image2; public void init( ) m_image0= getImage(getCodeBase( ), ts1.gif); m_image1= getImage(getCodeBase( ), ts2.gif); / End of method: init public void paint(Graphics g) g.drawImage(m_image0, 0, 0, 150, 150, this); g.drawImage(m_image1, 150, 0, 150, 150, thi
20、s); g.drawImage(m_image0, 0, 150, 300, 150, this); / End of method: paint / End of class: J_Image昂蝎撰病苛餌胞盈疆衍郎蔭三脆僑筷放器偏潮殺杰菊瞻膩鞋科災傈摸捌利chapter09多媒體與圖形學程序設計-JavaPchapter09多媒體與圖形學程序設計-JavaP 2005 趙小敏Java Programming運行結果拈苗畔恒綱亭憤理偶窗但安阿辦縛超汁港楓數犯臆丫每薔穎運信謂鴕錳捏chapter09多媒體與圖形學程序設計-JavaPchapter09多媒體與圖形學程序設計-JavaP 2005
21、趙小敏Java Programming3、幻燈機效果如果Applet 僅僅是顯示一幅圖像,沒有什么特別的意義,不如直接在HTML文件中顯示圖像。Applet應該做HTML做不到的事情,例如像幻燈機那樣連續顯示圖像。多幅圖像的顯示,如下圖:餒撥靈身色尊好解裴劊流稈筋殷篆勉妄捶谷異獅烹脈燈證組冠淪吭哇蚤嚴chapter09多媒體與圖形學程序設計-JavaPchapter09多媒體與圖形學程序設計-JavaP 2005 趙小敏Java Programming例3:多幅圖像的顯示import java.awt.*;import java.awt.event.*;import java.applet.*
22、;public class ShowDoggy extends Applet int index; Image imgs=new Image14; public void init() addMouseListener(new MouseAdapter() public void mouseClicked(MouseEvent e) index=+index%6; repaint(); ); for (int i=0; i14; i+) imgsi=getImage(getCodeBase(),doggy/T+i+.gif); public void paint(Graphics g) if
23、(imgsindex!=null) g.drawImage(imgsindex,20,20,this); 群逗韓蘆腥噶咳踩頌贈奪盧乓雁爍吁攻煩悟雕球絆開更媒賬陰進校灣虹琳chapter09多媒體與圖形學程序設計-JavaPchapter09多媒體與圖形學程序設計-JavaP 2005 趙小敏Java Programming三、圖形處理基本的圖形類:Color類:包含控制顏色的方法和常量Font類:包含控制字體的方法和常量Polygon類:包含創建多邊形的方法Graphis類:包含了繪制字符串、線條、矩形及其它形狀的方法Rectangle類:用來繪制矩形java.awt.geom.CubicCu
24、rve2D.Double類:畫拋物線java.awt.geom.Arc2D.Double 類:畫圓弧java.awt.geom.Ellipse2D.Double 類:畫橢圓啪純柜暑譏凈宿腿簡改際崩談垮慈秋了花尊蛙色奠紐函瘓療鈕供洪叁蠻縮chapter09多媒體與圖形學程序設計-JavaPchapter09多媒體與圖形學程序設計-JavaP 2005 趙小敏Java Programming圖形環境和圖形對象在java中,圖形環境使得可以在屏幕上繪圖,對各種圖形的顯示通過類Graphics和Graphics2D來完成。Graphics對象包含了繪圖方法,字體控制和顏色控制等Component類的p
25、aint方法以一個Graphics對象作為參數,在Component執行paint操作時,系統將Graphics對象傳送給paint方法。 public void paint(Graphics g)亂訊巨寥抵痛擠修錐領撞黃賦卸葷垛藍艦福陷印蝴跡希助椎孽院故鞍殉的chapter09多媒體與圖形學程序設計-JavaPchapter09多媒體與圖形學程序設計-JavaP 2005 趙小敏Java Programming顏色控制Java API提供Color類定義顏色的方法和常量。每種顏色都是由紅、綠和籃三種顏色組成,稱為RGB值。一個RGB值由三個部分,是0255的整數或0.01.0的浮點數。RGB
26、值越大,相應顏色的含量越大。例4:使用幾種不同的顏色繪制填充矩形和字符串昆熄與聾瑪札岳巢籬嚎矽費績詳擺廂陰聘光當膜五左錦筋唯疹商一霧斑診chapter09多媒體與圖形學程序設計-JavaPchapter09多媒體與圖形學程序設計-JavaP 2005 趙小敏Java Programming字體控制Java API提供Font類定義字體的方法和常量。Font類的構造函數有三個參數:字體名稱、字體風格和字體大小。字體名稱可以是運行程序的系統所支持的任何一種字體,如Java字體Monospaced,SansSerif和Serif字體風格可以是Font.PLAIN,Font.ITALIC和Font.B
27、OLD,字體風格可以組合使用,如Font.ITALICFont.BOLD字體大小是以點來衡量的,一個點是1/21英寸注意:制定一個系統不存在的字體是一種邏輯錯誤。狀矗勿咒嫂袖端排腕臉憶違韓窺站惡躇丸芯迪窯榴蚌蝗文抄哥墜婁無壟峽chapter09多媒體與圖形學程序設計-JavaPchapter09多媒體與圖形學程序設計-JavaP 2005 趙小敏Java Programming例5:顯示4種不同大小、不同字體的文本 public void paint( Graphics g ) g.setFont( new Font( Serif, Font.BOLD, 12 ) ); g.drawStrin
28、g( Serif 12 point bold., 20, 50 ); g.setFont( new Font( Monospaced, Font.ITALIC, 24 ) ); g.drawString( Monospaced 24 point italic., 20, 70 ); g.setFont( new Font( SansSerif, Font.PLAIN, 14 ) ); g.drawString( SansSerif 14 point plain., 20, 90 ); g.setColor( Color.red ); g.setFont( new Font( Serif, Fo
29、nt.BOLD + Font.ITALIC, 18 ) ); g.drawString( g.getFont().getName() + + g.getFont().getSize() + point bold italic., 20, 110 ); 癸垢盜燒竄爵姑榷啄廊拙喪螺疆川熱夸柜迎偵兆撥苯填療戀英述煩銜拔攏chapter09多媒體與圖形學程序設計-JavaPchapter09多媒體與圖形學程序設計-JavaP 2005 趙小敏Java Programming畫線、矩形和橢圓例6:線、矩形、3D矩形、圓角矩形和橢圓的繪制。public void paint( Graphics g ) g
30、.setColor( Color.red ); g.drawLine( 5, 30, 350, 30 ); g.setColor( Color.blue ); g.drawRect( 5, 40, 90, 55 ); g.fillRect( 100, 40, 90, 55 ); g.setColor( Color.cyan ); g.fillRoundRect( 195, 40, 90, 55, 50, 50 ); g.drawRoundRect( 290, 40, 90, 55, 20, 20 ); g.setColor( Color.yellow ); g.draw3DRect( 5, 1
31、00, 90, 55, true ); g.fill3DRect( 100, 100, 90, 55, false ); g.setColor( Color.magenta ); g.drawOval( 195, 100, 90, 55 ); g.fillOval( 290, 100, 90, 55 ); 贈榷惕魄往筋貨甭喧吩工閃痔昏莆別含乍滬聽羞炕蠟子逼蜒卸丑薊焊馬夜chapter09多媒體與圖形學程序設計-JavaPchapter09多媒體與圖形學程序設計-JavaP 2005 趙小敏Java Programming畫圓弧弧形是橢圓的一部分,弧的角度以度來衡量。例7:演示drawArc和f
32、illArc。 public void paint( Graphics g ) / start at 0 and sweep 360 degrees g.setColor( Color.yellow ); g.drawRect( 15, 35, 80, 80 ); g.setColor( Color.black ); g.drawArc( 15, 35, 80, 80, 0, 360 ); / start at 0 and sweep 110 degrees g.setColor( Color.yellow ); g.drawRect( 100, 35, 80, 80 ); g.setColo
33、r( Color.black ); g.drawArc( 100, 35, 80, 80, 0, 110 ); / start at 0 and sweep -270 degrees g.setColor( Color.yellow ); g.drawRect( 185, 35, 80, 80 ); g.setColor( Color.black ); g.drawArc( 185, 35, 80, 80, 0, -270 ); / start at 0 and sweep 360 degrees g.fillArc( 15, 120, 80, 40, 0, 360 ); / start at
34、 270 and sweep -90 degrees g.fillArc( 100, 120, 80, 40, 270, -90 ); / start at 0 and sweep -270 degrees g.fillArc( 185, 120, 80, 40, 0, -270 ); 韻瓢蛀茶勾橢事偵洛貪裳阿寶巍咸摹鞋訣秋權績黑靡耕咎湘翅惹略釣閥詛chapter09多媒體與圖形學程序設計-JavaPchapter09多媒體與圖形學程序設計-JavaP 2005 趙小敏Java Programming例8:畫多邊形和折線 public void paint( Graphics g ) int
35、xValues = 20, 40, 50, 30, 20, 15 ; int yValues = 50, 50, 60, 80, 80, 60 ; Polygon poly1 = new Polygon( xValues, yValues, 6 ); g.drawPolygon( poly1 ); int xValues2 = 70, 90, 100, 80, 70, 35, 60 ; int yValues2 = 100, 100, 110, 110, 130, 110, 90 ; g.drawPolyline( xValues2, yValues2, 7 ); int xValues3 =
36、 120, 140, 150, 190 ; int yValues3 = 40, 70, 80, 60 ; g.fillPolygon( xValues3, yValues3, 4 ); Polygon poly2 = new Polygon(); poly2.addPoint( 165, 135 ); poly2.addPoint( 175, 150 ); poly2.addPoint( 270, 200 ); poly2.addPoint( 200, 220 ); poly2.addPoint( 130, 180 ); g.fillPolygon( poly2 ); 謗男磋津淪萌蛔鞍招題汕
37、拍擦殊臼纖耽豹銑踢滄突鷗哨汾判舞口拉瑪侈模chapter09多媒體與圖形學程序設計-JavaPchapter09多媒體與圖形學程序設計-JavaP 2005 趙小敏Java Programming結果顯示(70,100)(90,100)(100,110)(80,110)(70,130)(65,110)(60,90)隋鴕注館遞閻骨男鴦煽歲原檸粒蒜癰懲臻鑲擲弓仁薛鼎臂財擂歹洶堡瞥丈chapter09多媒體與圖形學程序設計-JavaPchapter09多媒體與圖形學程序設計-JavaP 2005 趙小敏Java ProgrammingJava2D APIJava2D API提供繪制復雜圖形的二維圖形
38、功能類,具體在以下包中:java.awt.*java.awt.image.*java.awt.color.*java.awt.font.*java.awt.geom.*java.awt.print.*java.awt.image.renderable鎢麻絡彤丫吃段妓信拽韌咽荊職束悉繁識橋腔峪偏圃屠甲貢敷屑危渴險憫chapter09多媒體與圖形學程序設計-JavaPchapter09多媒體與圖形學程序設計-JavaP 2005 趙小敏Java ProgrammingJava2D圖形java.awt.geom包中提供一些Java2D圖形功能的類,包括Ellipse2D.Double, Rectan
39、gle2D.Double, RoundRectangle2D.Double,Arc2D.Double和Line2D.Double等。例9:演示幾種Java2D圖形和繪制的特性例10:繪制五角星扭峻效胰袖奪鑿翌卉舀藤丫灸掄篆美吝且鋒畝添就爽喀噸蛋似輻伐墑冉賃chapter09多媒體與圖形學程序設計-JavaPchapter09多媒體與圖形學程序設計-JavaP 2005 趙小敏Java Programming四、動畫處理游戲軟件的設計中,動畫向程序員提出了挑戰,但在Java中實現動畫則是十分簡單的事情。下面讓我們一起由淺入深地編寫幾個動畫程序實例,并通過對這些實例的逐步改進來探討Java動畫技術
40、的關鍵。校還碰挎嘯搔矢秧胎溺蛹嗣繕剔枉魄層瞇置郴軌雖蠢債惠播佃敵謹瑟鎬罪chapter09多媒體與圖形學程序設計-JavaPchapter09多媒體與圖形學程序設計-JavaP 2005 趙小敏Java Programming1、動畫原理計算機動畫原理十分簡單,首先在屏幕上顯示出第一幀畫面,過一會兒把它擦掉,然后再顯示下一幀畫面,如此循環往復。由于人眼存在著一個視覺差,所以感覺好像畫面中的物體在不斷運動。路柞俠伊侄末軀夯謎驚乙壕屈釘忘承許貴峻鈞襄出工閱柿容爵柄粥快額叁chapter09多媒體與圖形學程序設計-JavaPchapter09多媒體與圖形學程序設計-JavaP 2005 趙小敏Jav
41、a Programming例11:宇宙飛船游太空import java.awt.*;import java.applet.*;public class MovingImg extends Applet Image star, rocket; int x=0; public void init() star=getImage(getCodeBase(),starfield.gif); rocket=getImage(getCodeBase(),rocketship.gif); public void paint(Graphics g) g.drawImage(star,0,0,this); g.
42、drawImage(rocket,x,15,this); try Thread.sleep(30); x+=5; if (x=400) x=0; Thread.sleep(600); catch (InterruptedException e) repaint(); 丁魂膛障放棘諒燦碴酒舊調霞葬日宣穿畏維駛拉曼契內瑞團鏈懾頤灼梅盂chapter09多媒體與圖形學程序設計-JavaPchapter09多媒體與圖形學程序設計-JavaP 2005 趙小敏Java Programming程序分析(1)這是一個很簡單的動畫,在Applet中有一個充當太空的背景圖,一艘宇宙飛船在太空圖上不斷從左邊移動到
43、右邊。程序中創建了兩個Image對象star和rocket,在init方法中分別加載了兩個圖像文件和這兩個對象關聯起來。添加了變量x用來指定飛船的畫出位置,x初始化為10。在paint方法中,注意到太空總是畫在指定位置(0, 0),而飛船則畫在位置(x, 15),其中x的值是不斷變化的。鍬傲阮哮穿狀直爵霞抽腥鑷攏顆蹈媳猴看影半岔郝骨梧矮剎丟斜雪迂療序chapter09多媒體與圖形學程序設計-JavaPchapter09多媒體與圖形學程序設計-JavaP 2005 趙小敏Java Programming程序分析(2)真正使飛船實現動畫效果是在try.catch塊中。paint方法的最后一條語句是
44、調用repaint方法。repaint方法的功能是重畫圖像,它先調用update方法將顯示區清空,再調用paint方法畫出圖像。這就形成了一個循環,paint調用了repaint,而repaint又調用了paint,使飛船不間斷地來回移動。運行這個Applet時,畫面有閃爍現象。一般來說,畫面越大,update以背景色清除顯示區所占用的時間就越長,不可避免地會產生閃爍。為了達到平滑而又沒有閃爍的動畫效果,就應該考慮采取一些補救措施。覆蓋update方法可以降低閃爍,但不能消除它。能有效消除閃爍的方法是采用圖形雙緩沖技術(graphics double buffering)?;熘u棕患獺棟摔恒荊
45、融隘貝卷呵巨捌踩淋域礎域快班狂煎遍橫項池媳倔chapter09多媒體與圖形學程序設計-JavaPchapter09多媒體與圖形學程序設計-JavaP 2005 趙小敏Java Programming2、圖形雙緩沖技術import java.awt.*;import java.applet.*;public class MovingImg extends Applet Image star, rocket, buffer; Graphics gContext; int x=10; public void init() star=getImage(getCodeBase(),starfield.g
46、if); rocket=getImage(getCodeBase(),rocketship.gif); buffer=createImage(getWidth(),getHeight(); gContext=buffer.getGraphics(); public void paint(Graphics g) gContext.drawImage(star,0,0,this); gContext.drawImage(rocket,x,15,this); g.drawImage(buffer,0,0,this); try Thread.sleep(10); x+=2; if (x=400) x=
47、10; Thread.sleep(1000); catch (InterruptedException e) repaint(); public void update(Graphics g) paint(g); 例12:改進后的宇宙飛船游太空咋足春擒嚴在坍味豐狼恥榷得邵偶躇散湛瀉騙衡雜逸宗豺咯晰暇凌如升騁chapter09多媒體與圖形學程序設計-JavaPchapter09多媒體與圖形學程序設計-JavaP 2005 趙小敏Java Programming3、用線程實現動畫例12用圖形雙緩沖改善了圖像閃爍問題,但仍存在一些其他問題。例如用戶離開網頁后,嵌入的Applet會繼續運行,占用CPU
48、時間。下面的例13出于網絡實用的目的,采用獨立線程實現動畫。利肘甘厲禱鍍通拘魁七印垛觀嬰薯煤敲吊嘶鱗鐐治掀鍬開巨朗膳瞎淪婆壕chapter09多媒體與圖形學程序設計-JavaPchapter09多媒體與圖形學程序設計-JavaP 2005 趙小敏Java Programmingimport java.awt.*;import java.applet.*;public class Running extends Applet implements Runnable Image img=new Image14; Image buffer; Graphics gContext; Thread animate; int index=0; public void init() buffer=createImage(getWidt
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 模具行業法律法規與標準考核試卷
- 玻璃涂層技術考核試卷
- 電氣安裝工程的監理與驗收程序規范標準考核試卷
- 相機購買指南與消費建議考核試卷
- 玻璃太陽能集熱器考核試卷
- 景區旅游市場秩序維護考核試卷
- 玩具設計中的故事性與品牌塑造考核試卷
- 成人高等教育計算機圖形學與虛擬現實考核試卷
- 糧油企業綠色采購與供應鏈管理考核試卷
- 寧夏財經職業技術學院《地質資源與地質工程進展與創新》2023-2024學年第二學期期末試卷
- 店鋪裝修施工方案
- 2025火災報警產品強制性產品認證實施細則
- 中考數學《數與式》專題訓練(含答案)
- 新生兒呼吸窘迫綜合征的護理查房
- 體外診斷試劑培訓課件
- 《ICC概述》課件:揭秘國際刑事法院的職能與運作
- 《建筑裝飾工程施工圖設計》學習領域課程標準
- DB33T 1214-2020 建筑裝飾裝修工程施工質量驗收檢查用表標準
- 消化內科診療指南及操作規范
- 液體配制安全
- 《電動航空器電推進系統技術規范》
評論
0/150
提交評論