




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第十一章Applet與多媒體遼寧機(jī)電職業(yè)技術(shù)學(xué)院信息工程系軟件教研室遲勇回顧簡(jiǎn)述構(gòu)建一個(gè)事件處理程序的過(guò)程,完善下面的代碼:importjava.awt.*;importjava.awt.
.*;//導(dǎo)入事件處理類(lèi)所在的類(lèi)包publicclassEventHandleextendsFrameimplementsActionListener{ TextFieldt1=newTextField(20); Buttonb1=newButton("登錄");publicEventHandle(Stringtitle){ super(title); this.setLayout(newFlowLayout()); this.add(t1); this.add(b1); b1.
(this);//為按鈕b1注冊(cè)監(jiān)聽(tīng)器this this.setSize(200,90); this.setVisible(true);}publicvoidactionPerformed(
e)//實(shí)現(xiàn)接口里的方法
{ if(e.
()==b1)//判斷事件源是否是按鈕b1 { t1.setText("大家好!"); }}eventaddActionListenerActionEventgetSource本章學(xué)習(xí)任務(wù)使用Applet技術(shù),在網(wǎng)頁(yè)中輸出“HelloWorld!”通過(guò)實(shí)例理解Applet生命周期通過(guò)網(wǎng)頁(yè)中設(shè)定的參數(shù)來(lái)求解它們的和在Applet中完成各種繪圖使用動(dòng)畫(huà)技術(shù)完成“會(huì)動(dòng)的矩形”本章技能目標(biāo)了解Applet的地位、運(yùn)行原理和語(yǔ)法格式學(xué)習(xí)在HTML與Applet之間傳遞參數(shù)在Applet中繪制圖形和動(dòng)畫(huà)預(yù)習(xí)檢查(1)--預(yù)習(xí)新單詞單詞釋義單詞釋義ApplicationAppletsandboxStateIdlepaintrepaintupdateGraphicsParameterURLObserver預(yù)習(xí)檢查(2)Applet生命周期包括哪些方法?說(shuō)說(shuō)Applet中繪制動(dòng)畫(huà)過(guò)程中需要使用哪些方法?Applet與繪圖-內(nèi)容目錄Applet簡(jiǎn)介在Applet繪圖在Application中繪圖11.1 Applet簡(jiǎn)介Java基本應(yīng)用包括Application(應(yīng)用程序)和Applet(小應(yīng)用程序)。應(yīng)用程序具備獨(dú)立的功能,小應(yīng)用程序則被設(shè)計(jì)成網(wǎng)頁(yè)中的一種元素,運(yùn)行在Internet上。它是HTML頁(yè)面的一部分,不能獨(dú)立運(yùn)行,需要瀏覽器來(lái)解釋它。Applet最初主要用于制作網(wǎng)頁(yè)動(dòng)畫(huà)效果,這部分應(yīng)用逐步被Flash等快捷的動(dòng)畫(huà)制作工具所替代?,F(xiàn)在,Applet主要用于Intranet(企業(yè)內(nèi)部網(wǎng))等對(duì)網(wǎng)速?zèng)]有過(guò)多限制的場(chǎng)合。java.awtjava.langjava.appletComponentContainerPanelDialogWindowFrameAppletObjectApplet是Panel類(lèi)的子類(lèi),但是Panel類(lèi)在java.awt包中,而Applet在java.applet包中,如圖11-1所示11.1.2 簡(jiǎn)單Applet程序例11-1:在網(wǎng)頁(yè)中輸出“HelloWorld!”importjava.awt.*;//Graphics類(lèi)來(lái)自awt包importjava.applet.*;//Applet類(lèi)來(lái)自applet包publicclassHelloWorldextendsApplet{Stringstr; //定義字符串成員變量publicvoidinit(){ //繼承自Applet類(lèi)的成員方法str="HelloWorld!";//給str成員賦值}publicvoidpaint(Graphicsg){//繼承自Applet類(lèi)的成員方法
g.drawString(str,50,60);//將字符串str輸出到(50,60)點(diǎn)位置}}步驟(1):編寫(xiě)HelloWorld.java源文件步驟(4)最后執(zhí)行HTML文件即可。步驟(2):編譯HelloWorld.java得到HelloWorld.class文件步驟(3):編寫(xiě)文件My.htm(或擴(kuò)展名為html)(文件名任意),將字節(jié)碼文件HelloWorld.class嵌入到My.htm<HTML><HEAD><TITLE></TITLE></HEAD><BODY><APPLET code="HelloWorld.class“width="260" height="100" ></APPLET></BODY></HTML>運(yùn)行結(jié)果【運(yùn)行方法1:】(如果您的系統(tǒng)中的瀏覽器安裝有JVM,直接執(zhí)行My.htm文件,顯示的窗口如圖所示。)運(yùn)行結(jié)果【運(yùn)行方法2:】也可以考慮使用小程序查看器(AppletViewer.exe)這個(gè)工具在JDK安裝目錄的bin目錄下,運(yùn)行時(shí)切換到My.htm文件所在的目錄下:11.1.3 Applet的安全機(jī)制在JDK1.0的版本中,提供了SecurityManager類(lèi),可以控制JVM的所有系統(tǒng)級(jí)調(diào)用。該功能被稱(chēng)為“沙箱(sandbox)”安全機(jī)制。“沙箱”的具體安全運(yùn)行規(guī)則如下:1.Applet不能運(yùn)行任何本地的可執(zhí)行程序;2.除了Applet所在的那個(gè)下載服務(wù)器外,Applet不能和任何其它主機(jī)通信;3.Applet不能讀寫(xiě)本地的系統(tǒng)文件;4.除了Java和操作系統(tǒng)使用的版本號(hào)和基本字符外,Applet不能找到任何其它字符信息(比如用戶(hù)名,電子郵件地址等);5.Applet的彈出式窗口都帶有警告信息;JDK1.0的沙箱模型有效的防止了網(wǎng)絡(luò)上惡意的小程序。11.1.4 Applet的生命周期小程序的創(chuàng)建和運(yùn)行涉及到五個(gè)基本方法:init()、start()、paint()、stop()、destroy()。它們繼承自Applet父類(lèi),都是public和void類(lèi)型的。如果需要界面刷新或動(dòng)畫(huà)處理,還需要repaint()、update()方法。這五個(gè)基本方法的執(zhí)行次序如圖11-4所示。新生運(yùn)行顯示閑置銷(xiāo)毀init()start()paint()stop()destroy()再次調(diào)用start()Applet的生命周期--21.init()當(dāng)Applet實(shí)例在HTML頁(yè)面中加載時(shí),自動(dòng)調(diào)用init()方法進(jìn)入初始狀態(tài)(InitializationState)從父類(lèi)繼承的init()方法的默認(rèn)時(shí)為空方法,因此必須在本Applet類(lèi)中重寫(xiě),以完成所需要的功能無(wú)論什么時(shí)候創(chuàng)建Applet實(shí)例,都會(huì)調(diào)用init()方法;在此init()方法中可以初始化變量(如創(chuàng)建對(duì)象,裝載圖像等);init()方法在Applet的生命周期內(nèi)只能調(diào)用一次;2.start()調(diào)用init()方法之后,將自動(dòng)調(diào)用start()方法,進(jìn)入啟動(dòng)狀態(tài)(StartState):Applet實(shí)例的init()方法執(zhí)行后,都將調(diào)用start()方法;因此start()方法可以被調(diào)用多次,而init()方法只調(diào)用一次;重新載入Applet的HTML文檔時(shí)(例如重復(fù)打開(kāi)網(wǎng)站的一個(gè)網(wǎng)頁(yè)),也將調(diào)用start()方法;如果一個(gè)Applet處于“Idlestate(閑置狀態(tài))”(當(dāng)用戶(hù)從Applet所在的Web頁(yè)面轉(zhuǎn)到其他頁(yè)面,然后又后退返回),Applet將重新調(diào)用start()方法。Applet的生命周期--33.paint()只要重新繪制Applet(包括Applet區(qū)域自動(dòng)刷新顯示),都會(huì)調(diào)用方法paint(),這稱(chēng)為繪制狀態(tài)(PaintState):用戶(hù)手動(dòng)調(diào)用paint()方法時(shí);系統(tǒng)自動(dòng)刷新Applet時(shí)(例如一個(gè)Applet窗口被一個(gè)新的窗口覆蓋,或運(yùn)行Applet的窗口最小化之后再恢復(fù)的時(shí)候),就要調(diào)用paint()方法。4.stop()當(dāng)瀏覽器中運(yùn)行Applet的頁(yè)面切換到其他頁(yè)面,stop()方法就會(huì)自動(dòng)執(zhí)行,停止頁(yè)中面的Applet,這時(shí)該Applet轉(zhuǎn)為閑置狀態(tài)(Idlestate)。處于閑置狀態(tài)的Applet可以通過(guò)調(diào)用start()方法重新啟動(dòng)。
5.destroy()當(dāng)關(guān)閉一個(gè)Applet時(shí)將調(diào)用destroy()方法,該Applet就從內(nèi)存中被完全銷(xiāo)毀,這稱(chēng)為銷(xiāo)毀狀態(tài)(DestroyState):包含Applet的HTML頁(yè)面被關(guān)閉時(shí)調(diào)用destroy()方法。在當(dāng)前運(yùn)行HTML頁(yè)面的瀏覽器窗口上打開(kāi)一個(gè)新的站點(diǎn)時(shí)調(diào)用destroy()方法。destroy()方法將刪除Applet運(yùn)行所占用的所有資源。例11-2:Applet生命周期importjava.awt.*;importjava.applet.*;publicclassAppletLifecycleextendsApplet{ intinitcount=0,startcount=0,stopcount=0; intdestorycount=0,paintcount=0; publicvoidinit() {initcount++;}
publicvoidstart(){startcount++;}
publicvoidstop(){stopcount++;}publicvoidpaint(Graphicsg) { paintcount++; g.drawString("initcount="+initcount,10,20); g.drawString("startcount="+startcount,10,40); g.drawString("stopcount="+stopcount,10,60); g.drawString("paintcount="+paintcount,10,80); g.drawString("destorycount="+destorycount,10,100); } publicvoiddestory(){destorycount++;}}11.1.5 Applet的標(biāo)記及其屬性1.Applet標(biāo)記及其屬性
在HTML文件中,嵌入的Applet標(biāo)記的完整語(yǔ)法格式為:(方括號(hào)內(nèi)的是<applet>標(biāo)記的可選屬性)
<APPLETcode=AppletClassFilewidth=pixheight=pix[codebase=CodebaseURL][alt=alternateText][name=appletInstanceName][align=alignment][vspace=pix][hspace=pix][archive=archiveFile]><paramname=attribute1value=value1><paramname=attribute2value=value2>……
</APPLET>定位Applet的屬性:1)code該項(xiàng)為必選項(xiàng),AppletClassFile是瀏覽器要加載Applet字節(jié)碼文件名。AppletClassFile也可以采用packagename.classname.class的形式。例如:<appletclass=myPackage.myApplet.classwidth=400height=200></applet>如果沒(méi)有codebase選項(xiàng),AppletClassFile將使用與HTML文件相同的URL(路徑或地址)。注意,AppletClassFile的.class擴(kuò)展名可以省略;codebase選項(xiàng)可以使用路徑,但必須是相對(duì)路徑。2)codebase該可選屬性指定Java字節(jié)碼文件的路徑或URL。URL(UniformResourceLocator)也叫統(tǒng)一資源定位器,是以域名或IP地址形式給出的網(wǎng)絡(luò)中主機(jī)的位置。如果未指定該屬性,則Appletclassfile將使用與HTML文檔相同的路徑。若Applet同HTML文件在不同的計(jì)算機(jī)上,需要以URL的形式,指出Applet的位置。若兩者在同一計(jì)算機(jī)的不同路徑下,需要以路徑的形式給出Applet的目錄。定位Applet的屬性:--23)name該標(biāo)記用來(lái)為Applet指定一個(gè)實(shí)例名稱(chēng),以便在相同頁(yè)面上的多個(gè)Applet實(shí)例之間,能通過(guò)指定的實(shí)例名相互訪問(wèn)。4)archive該可選屬性列出了Applet所在的Java檔案文件等網(wǎng)絡(luò)資源名。這些檔案文件是從Web服務(wù)器上獲得,封裝了Applet所在的所有Applet字節(jié)碼文件,這樣可以實(shí)現(xiàn)有效的封裝和快捷的下載。規(guī)定Applet顯示方式的屬性width和height以像素為單位,指出Applet顯示區(qū)域的寬度和高度,該選項(xiàng)是必須的。該屬性指定Applet在瀏覽器窗口中的對(duì)齊方式。其值為left(左對(duì)齊),right(右對(duì)齊),top(靠上),texttop(與文本頂部對(duì)齊),middle(中間對(duì)齊),absmiddle(行中間與顯示域中間對(duì)齊),baseline(行基線與顯示域的底部對(duì)齊),bottom(靠下)和absbottom(行底部與圖像底部對(duì)齊)。alt用于指定替換顯示的文本內(nèi)容。當(dāng)瀏覽器不能運(yùn)行Applet,就顯示替換文件的內(nèi)容,例如:alt=“找不到指定的Applet文件”。該屬性指定Applet四周的間隔,以像素為單位,vspace指定上下間隔,hspace指定左右間隔。HTML向Applet傳遞參數(shù)2.HTML向Applet傳遞參數(shù)<paramname=ParameterNamevalue=ParameterValue>該標(biāo)記用來(lái)向Applet傳遞參數(shù),name指定參數(shù)名稱(chēng),value指定參數(shù)的值。在Applet中,通過(guò)getParameter(ParameterName)方法獲取HTML文件中定義的外部參數(shù)的字符串值,但一個(gè)參數(shù)只能傳遞一個(gè)變量的值。例11-3:HTML向Applet傳遞參數(shù)(要求:在HTML文檔中設(shè)置兩個(gè)數(shù),在Applet顯示它們的和)<APPLET code="HTMLParameter.class" width="300" height="40"><paramname="op1"value="100"><paramname="op2"value="99.9"></APPLET>HTMLParameter.java代碼publicclassHTMLParameterextendsApplet{doubled1,d2,result;publicvoidinit(){ d1=Double.valueOf(this.getParameter("op1")).doubleValue(); d2=Double.valueOf(this.getParameter("op2")).doubleValue(); result=d1+d2; } publicvoidpaint(Graphicsg){ g.drawString(Double.toString(d1)+"與"+String.valueOf(d2)+"的和是:"+String.valueOf(result),50,30); }}11.1.6 Applet與Application的區(qū)別小應(yīng)用程序Applet應(yīng)用程序ApplictionApplet基本上是為部署在Web上而設(shè)計(jì)的Application是為可以獨(dú)立工作的程序而設(shè)計(jì)的Applet必須擴(kuò)展java.applet.Applet類(lèi)應(yīng)用程序則不受這種限制Applet通過(guò)AppletViewer或在支持Java的瀏覽器的解釋器上運(yùn)行應(yīng)用程序使用Java解釋器運(yùn)行Applet的執(zhí)行從init()方法開(kāi)始應(yīng)用程序的執(zhí)行從main()方法開(kāi)始Applet必須至少包含一個(gè)public類(lèi),否則編譯器會(huì)報(bào)錯(cuò)。對(duì)于應(yīng)用程序,入口類(lèi)不必是public類(lèi),但建議設(shè)成public類(lèi)。例11-4:
Applet轉(zhuǎn)換為Appliction<APPLET code="AppletToApp.class"width="280"height="50"></APPLET>importjava.awt.*;importjava.applet.*;publicclassAppletToAppextendsApplet{//Applet類(lèi)publicvoidinit(){//Applet的init()方法
this.add(newButton("I'minApplet!"));//Applet包含一個(gè)按鈕
} publicstaticvoidmain(Stringargs[]){//Application的入口
AppletToAppapplet=newAppletToApp();//添加AppletToApp的實(shí)例
Framef=newFrame();//添加一個(gè)窗體
f.add(applet);//將AppletToApp的實(shí)例加入到窗體f中
applet.init();//AppletToApp的實(shí)例自行完成構(gòu)建
f.setTitle("Applet轉(zhuǎn)換為Application示例");
f.setSize(250,80);//設(shè)置Appliction窗體f大小的方法
f.setVisible(true);//顯示Appliction窗體f的方法
}}運(yùn)行結(jié)果當(dāng)把程序做為Applet時(shí),使用AppletViewer.exe運(yùn)行結(jié)果如下圖:
當(dāng)把程序做為Application時(shí),使用java.exe運(yùn)行結(jié)果如下圖:
Applet與繪圖-內(nèi)容目錄Applet簡(jiǎn)介在Applet繪圖在Application中繪圖11.2 在Applet中繪圖Applet是Component類(lèi)的間接子類(lèi),因此它也具備組件類(lèi)的一些特點(diǎn),比如圖形繪制功能。在Applet中可以使用paint(Graphics)方法設(shè)置和繪制當(dāng)前要顯示的圖形,比如設(shè)置字體、前景色和背景色,繪制字符串,各種圖形等。前面我們介紹過(guò)paint()方法的參數(shù),這個(gè)Graphics類(lèi)的實(shí)例可以把它當(dāng)作是“畫(huà)筆”,它可以設(shè)置“筆芯”狀態(tài),還可以繪制圖形和圖像。Graphics類(lèi)提供的基本方法有設(shè)置方法:繪制字符方法:方法名功能描述setFont(Fontfont)設(shè)置字體setColor(Colorc)設(shè)置顏色方法名功能描述drawBytes(byte[]data,intoffset,intlength,intx,inty)繪制字節(jié)數(shù)組drawChars(char[]data,intoffset,intlength,intx,inty)繪制字符數(shù)組drawString(Stringstr,intx,inty)繪制字符串Graphics類(lèi)提供的基本方法有--2繪圖方法:方法名功能描述drawLine(intx1,inty1,intx2,inty2)畫(huà)線drawRect(intx,inty,intwidth,intheight)畫(huà)矩形drawRoundRect(intx,inty,intwidth,intheight,intarcWidth,intarcHeight)畫(huà)園角矩形drawOval(intx,inty,intwidth,intheight)畫(huà)橢圓drawArc(intx,inty,intwidth,intheight,intstartAngle,intarcAngle)畫(huà)弧drawPolygon(int[]xPoints,int[]yPoints,intnPoints)畫(huà)多邊形drawPolyline(int[]xPoints,int[]yPoints,intnPoints)畫(huà)多義線fillArc(intx,inty,intwidth,intheight,intstartAngle,intarcAngle)畫(huà)填充圓弧或橢圓弧booleandrawImage(Imageimg,intx,inty,ImageObserverobserver)畫(huà)圖片11.2.1 設(shè)置字體與顏色字體類(lèi):Font構(gòu)造方法:Font(Stringname,intstyle,intsize);
//根據(jù)指定名稱(chēng)、樣式和點(diǎn)大小,創(chuàng)建一個(gè)新字體顏色類(lèi):在使用Graphics類(lèi)的setColor方法設(shè)置顏色時(shí),可以使用下列顏色常量:Color類(lèi)的靜態(tài)常量功能描述Color類(lèi)的靜態(tài)常量功能描述BLACK黑色MAGENTA洋紅色BLUE藍(lán)色ORANGE桔黃色CYAN青色PINK粉紅色DARK_GRAY深灰色RED紅色GRAY灰色WHITE白色GREEN綠色YELLOW黃色LIGHT_GRAY淺灰色構(gòu)造方法: Color(intr,intg,intb);Color(intr,intg,intb,inta);例11-5:設(shè)置字體與顏色importjava.awt.*;importjava.applet.*;publicclassSetAppletextendsApplet{ Fontfont1; Colorcolor1; Stringstr; publicvoidinit(){ font1=newFont(“Arial”,Font.BOLD+Font.ITALIC,20);//創(chuàng)建字體 color1=newColor(0,0,0);//創(chuàng)建顏色 str="Hello,Welcometohere!"; }
publicvoidpaint(Graphicsg){ g.setFont(font1);//設(shè)置字體 g.setColor(color1);//設(shè)置顏色 g.drawString(str,50,60); g.setFont(newFont("楷體_GB2312",1,25)); g.setColor(newColor(255,100,255,200)); g.drawString("進(jìn)入Applet的精彩世界!",50,100); }}11.2.2 繪制字符與繪制字符的相關(guān)的方法:drawBytes(byte[]data,intoffset,intlength,intx,inty);//繪制字節(jié)數(shù)組data,起始位置由offset設(shè)定,繪制長(zhǎng)度為length,繪制位置在(x,y)drawChars(char[]data,intoffset,intlength,intx,inty);//繪制字符數(shù)組ch,起始位置由offset設(shè)定,繪制長(zhǎng)度為length,繪制位置在(x,y)drawString(Stringstr,intx,inty);//繪制字符串str,繪制位置在(x,y)例11-6繪制字符importjava.awt.*;importjava.applet.*;importjava.util.*;//導(dǎo)入Date類(lèi)所在的包publicclassDrawDemoextendsApplet{byte[]b;char[]ch;Strings;publicvoidinit(){b=newbyte[]{97,98,'c'};ch=newchar[]{'H','e','l','l','o','','歡','迎','進(jìn)','入','!'};s="今天是星期";}publicvoidpaint(Graphicsg){g.setFont(newFont("DialogInput",Font.BOLD,20));//設(shè)置字體g.drawBytes(b,0,b.length,50,30);//畫(huà)字節(jié)數(shù)組g.drawChars(ch,6,2,50,60);//畫(huà)字符數(shù)組g.drawString(s+(newDate()).getDay(),50,90);//畫(huà)出當(dāng)前星期}}11.2.3 繪制圖形
(繪制區(qū)域基本圖形)與繪制圖形有關(guān)的典型方法,按照繪制方法分類(lèi)大致可分為三類(lèi):1.繪制有區(qū)域的基本圖形(如矩形、橢圓、弧等)
drawRect(intx,inty,intwidth,intheight);//畫(huà)矩形drawOval(intx,inty,intwidth,intheight);//畫(huà)橢圓
drawArc(intx,inty,intwidth,intheight,intstartAngle,intarcAngle);//畫(huà)弧這類(lèi)方法的繪制特點(diǎn)是:先確定一個(gè)起點(diǎn)(x,y),再以這個(gè)起點(diǎn)為左上角畫(huà)一個(gè)width寬度、height高度的矩形區(qū)域,在這個(gè)矩形的基礎(chǔ)上繪制其它圖形,如橢圓。例11-7:繪制矩形、橢圓和弧importjava.awt.*;importjava.applet.*;publicclassDrawDemo2extendsApplet{publicvoidpaint(Graphicsg){ g.drawRect(20,20,200,100);//畫(huà)矩形
g.setColor(Color.blue); g.drawOval(20,20,200,100);//畫(huà)橢圓
g.setColor(Color.pink); g.drawArc(20,20,200,100,0,90);//畫(huà)弧線
g.fillArc(20,20,200,100,0,90);//畫(huà)填充弧線
}}11.2.3 繪制圖形--2(繪制多線條圖形)2.繪制多線條圖形(如多邊形,多義線)這類(lèi)方法的繪制特點(diǎn)是:先確定線條的各個(gè)頂點(diǎn)的坐標(biāo),將這些坐標(biāo)點(diǎn)存入兩個(gè)數(shù)組xPoints和yPoints,同時(shí)還要確定組成圖形的線段或頂點(diǎn)的個(gè)數(shù)nPoints。drawPolygon(int[]xPoints,int[]yPoints,intnPoints);//畫(huà)多邊形drawPolyline(int[]xPoints,int[]yPoints,intnPoints);//畫(huà)多義線例11-8:繪制多邊形,多義線publicclassDrawDemo3extendsApplet{ intpx1[]={170,210,210,170,130,130,170}; intpy1[]={5,20,50,65,50,20,5}; intpx2[]={20,40,60,80,85,110,115}; intpy2[]={20,15,20,30,50,50,30}; publicvoidpaint(Graphicsg){ g.drawPolygon(px1,py1,6);//畫(huà)多邊形
g.drawPolyline(px2,py2,7);//畫(huà)多義線}}11.2.3 繪制圖形—3(繪制圖像)booleandrawImage(Imageimg,intx,inty,ImageObserverobserver);//畫(huà)圖像這類(lèi)方法的繪制特點(diǎn)是:圖像由Image類(lèi)的實(shí)例確定,圖像的位置在(x,y)處,同時(shí)還要確定“圖像觀察器”(ImageObserver),它是接收有關(guān)Image加載信息的接口。1).創(chuàng)建Image:在Applet中創(chuàng)建圖像文件Image類(lèi)的實(shí)例img可以使用getImage()方法,其中URL是“統(tǒng)一資源定位器”(UniformResourceLocator),用來(lái)代表網(wǎng)絡(luò)服務(wù)器或本地資源的地址2). 圖像觀察器ImageObserver:在圖像加載過(guò)程中,像素等元素有一個(gè)逐步添加的過(guò)程,ImageObserver接口用來(lái)判斷圖像加載是否完成,并把這個(gè)信息傳遞給其它對(duì)象。Component類(lèi)已經(jīng)實(shí)現(xiàn)了這個(gè)接口,因此所有的組件的實(shí)例都可以做為圖像觀察器使用。例11-9:加載圖像importjava.awt.*;importjava.applet.*;import.*;publicclassLoadImageextendsApplet{ Imageimg; publicvoidinit(){ try{img=getImage(newURL(getCodeBase(),"bear.gif")); } catch(Exceptione){}
}publicvoidpaint(Graphicsg){ g.setFont(newFont("黑體",Font.PLAIN,20)); g.drawString("休息,休息一會(huì)兒!",20,30); g.drawImage(img,20,30,this); }}
11.2.4 動(dòng)畫(huà)生成原理paint(Graphicsg)repaint()update(Graphicsg)動(dòng)畫(huà)技術(shù)的基本制作原理是讓程序每隔一段時(shí)間循環(huán)顯示一幅圖像,當(dāng)圖像連續(xù)播放時(shí),就會(huì)產(chǎn)生動(dòng)感。動(dòng)畫(huà)中的一幅圖像稱(chēng)為一“幀”(Frame)。當(dāng)每秒播放的幀數(shù)(fps:FramePerSecond)達(dá)到25幀以上就能產(chǎn)生比較流暢的動(dòng)畫(huà)repaint()方法用以請(qǐng)求重畫(huà)組件,它會(huì)自動(dòng)調(diào)用update()方法;update()方法可以更新當(dāng)前頁(yè)面,清除paint()方法以前所畫(huà)的內(nèi)容,然后再調(diào)用paint方法。因此,只要在paint()方法中調(diào)用repaint()方法,就可以產(chǎn)生循環(huán)調(diào)用。它們的調(diào)用次序如圖11-5所示:11.2.4 動(dòng)畫(huà)生成原理--2除此之外,我們還需要了解一下clearRect()方法的作用。clearRect(intx,inty,intwidth,intheight);用背景色填充指定矩形以達(dá)到清除該矩形的效果,也就是說(shuō)當(dāng)一個(gè)Graphics對(duì)象使用該方法時(shí),相當(dāng)于在使用一個(gè)“橡皮擦”。參數(shù)x,y是被清除矩形的左上角的坐標(biāo);另外兩個(gè)參數(shù)是被清除矩形的寬和高。importjava.awt.*;importjava.applet.*;publicclassClearRectextendsApplet{ pu
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 法學(xué)概論考試創(chuàng)新思維訓(xùn)練與試題及答案
- 軟件測(cè)試的標(biāo)準(zhǔn)和流程試題及答案
- VB編程趣味題試題及答案
- 2025年中國(guó)金花傷風(fēng)糖漿市場(chǎng)調(diào)查研究報(bào)告
- 軟考網(wǎng)絡(luò)管理員應(yīng)掌握的技能試題及答案
- 伏旱地理試題及答案
- 法理學(xué)的研究方法與應(yīng)用試題及答案
- 復(fù)雜性與不確定性下的企業(yè)戰(zhàn)略思考與風(fēng)險(xiǎn)管理試題及答案
- 食品翻譯四級(jí)考試試題及答案
- 宿管老師應(yīng)聘考試試題及答案
- 委托尋找房源協(xié)議書(shū)
- 建設(shè)項(xiàng)目全過(guò)程工程咨詢(xún)-第一次形成性考核-國(guó)開(kāi)(SC)-參考資料
- 2024建安杯信息通信建設(shè)行業(yè)安全競(jìng)賽題庫(kù)(試題含答案)
- (正式版)JBT 14581-2024 閥門(mén)用彈簧蓄能密封圈
- 2024年教師選調(diào)進(jìn)城考試試題(小學(xué)語(yǔ)文)含答案
- (通用版)漢字聽(tīng)寫(xiě)大會(huì)競(jìng)賽題庫(kù)及答案
- IE產(chǎn)能設(shè)備資源計(jì)劃表
- 4M1E基礎(chǔ)知識(shí)培訓(xùn).課件
- 一切才剛剛開(kāi)始——校長(zhǎng)在高考20天沖刺動(dòng)員大會(huì)上的講話
- 波浪理論基礎(chǔ)要點(diǎn)圖解[精]
- 關(guān)于磷化行業(yè)企業(yè)建設(shè)項(xiàng)目及污染排放有關(guān)問(wèn)題法律適用的復(fù)函
評(píng)論
0/150
提交評(píng)論