版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
學(xué)習(xí)情境手機游戲的控制第1頁,課件共41頁,創(chuàng)作于2023年2月能力目標能熟練實現(xiàn)線程、啟動和停止線程以及合理控制線程的執(zhí)行;使用脫屏畫布實現(xiàn)繪制雙緩沖區(qū)技術(shù);能熟練地制作進度條;學(xué)會使用getInstance()的方法獲得對象實例;能熟練地在Displayable界面中加入所需按鈕,移除不需要的按鈕;能在代碼中使用if語句或switch語句區(qū)分不同的按鈕,以實現(xiàn)不同的功能;完成從菜單進入相應(yīng)游戲界面,再從游戲界面返回菜單的操作;正確實現(xiàn)游戲的開始、暫停、繼續(xù)、重玩和返回功能;能快速搭建起手機游戲的制作框架。第2頁,課件共41頁,創(chuàng)作于2023年2月認知目標了解多線程的概念以及線程的四種狀態(tài);理解可變圖像和不可變圖像的區(qū)別;識記創(chuàng)建脫屏畫布、獲取脫屏畫筆的方法;了解對象池的概念,理解制作進度條的核心思想;了解MIDP框架中對事件的處理機制,熟記實現(xiàn)事件處理的三個步驟;識記CommandListener事件監(jiān)聽器的注冊方法和在該監(jiān)聽器接口中定義的commandAction()方法;了解ItemStateListener和ItemCommandListener事件監(jiān)聽器的注冊方法和實現(xiàn)方法;理解游戲狀態(tài)變量在游戲控制中發(fā)揮的作用。第3頁,課件共41頁,創(chuàng)作于2023年2月3.1學(xué)習(xí)情境描述在游戲開始前,通常需要完成對資源的加載操作,載入資源會出現(xiàn)一定的等待時間。在游戲中,通常使用進度條的方式來提示用戶:“正在進行資源載入,請耐心等待!”。在從菜單進入游戲界面,以及在游戲過程中界面之間的切換、游戲進程的“開始”、“暫?!?、“繼續(xù)”、“返回”、“退出”等,則通常使用按鈕的方式實現(xiàn)對用戶操作的響應(yīng)。在一款手機游戲中,存在很多關(guān)于游戲的控制環(huán)節(jié)。本學(xué)習(xí)情境分為四個學(xué)習(xí)單元來完成。單元一,響應(yīng)菜單命令;單元二,使用線程控制游戲進程;單元三,制作游戲加載進度條;單元四,搭建手機游戲制作框架。第4頁,課件共41頁,創(chuàng)作于2023年2月3.2響應(yīng)菜單命令在游戲屏幕的左下角或右下角通常會有一些類似“確定”、“取消”、“退出”、“返回”等操作的提示,稱之為“功能按鈕”。用戶通過按下鍵盤上的“左上”或“右上”功能鍵來響應(yīng)這些“功能按鈕”。使可視界面組件“活”起來,使之具備與用戶交互的能力,成為用戶與手機游戲溝通的橋梁?!肮δ馨粹o”可以是Command組件構(gòu)造的,也可以是一個繪制的圖片,當(dāng)然也可以是直接“寫”上去的提示文字。本學(xué)習(xí)單元的主要任務(wù):在游戲界面上添加各種形式的按鈕,并通過這些“功能按鈕”,從菜單項進入到游戲界面,再從游戲界面返回到主菜單。第5頁,課件共41頁,創(chuàng)作于2023年2月事件:一個事件描述了一個對象狀態(tài)的改變。例如:點擊按鈕。事件源:產(chǎn)生事件的對象。當(dāng)這個對象的內(nèi)部狀態(tài)改變時,事件就會產(chǎn)生。事件監(jiān)聽器:當(dāng)一個事件發(fā)生時,對事件做出響應(yīng)的對象。在對應(yīng)的事件監(jiān)聽器模型中,事件源和事件監(jiān)聽器是通過注冊聯(lián)系在一起的。一個事件源必須注冊一個事件監(jiān)聽器,這樣當(dāng)事件發(fā)生時,系統(tǒng)會自動傳遞事件,調(diào)用事件監(jiān)聽器中定義的方法來處理事件。在java.microedition.lcdui包中共定義了三種事件監(jiān)聽器,以接口的形式存在,分別為:CommandListener、ItemStateListener和ItemCommandListener。
CommandListener事件監(jiān)聽器事件源:Displayable對象(而不是Command按鈕)。注冊方法:setCommandListener(CommandListenerl)接口方法:publicvoidcommandAction(Commandc,Displayabled)ItemStateListener事件監(jiān)聽器事件源:Form類及其擴展類。注冊方法:setItemStateListener(ItemStateListenerl)接口方法:publicvoiditemStateChanged(Itemitem)
ItemCommandListener事件監(jiān)聽器事件源:Item類的子類。注冊方法:setItemCommandListener(ItemCommandListenerl)接口方法:publicvoidCommandAction(Commandcommand,Itemitem)3.2.2知識準備:事件處理總之,在MIDP框架中實現(xiàn)事件處理需要做如下三件事情:在類定義中加入implements子句,表示在該類中要實現(xiàn)接口。注冊事件監(jiān)聽器。實現(xiàn)接口中的方法,完成對事件的處理。第6頁,課件共41頁,創(chuàng)作于2023年2月3.2.3任務(wù)一:使用Command按鈕響應(yīng)菜單命令
第7頁,課件共41頁,創(chuàng)作于2023年2月知識提煉:Command界面組件Command組件的構(gòu)造方法如下:publicCommand(Stringlabel,intcommandType,intpriority)參數(shù)說明:label:標簽字符串,表示顯示在按鈕或菜單上的文字。commandType:按鈕類型。分別為SCREEN、BACK、CANCEL、OK、HELP、STOP、EXIT和ITEM。請注意這些類型常量僅僅提供一個標識,并不會真正實現(xiàn)相應(yīng)功能,具體功能需要通過代碼來實現(xiàn)。priority:優(yōu)先權(quán)。值越小代表優(yōu)先權(quán)越高,1代表最高優(yōu)先權(quán)。如果存在多個按鈕需要布局在窗體上,其布局位置根據(jù)優(yōu)先權(quán)決定。但實際的布局位置由設(shè)備決定。多于兩個以上的按鈕將構(gòu)成菜單。如果兩個按鈕類型相同,則優(yōu)先權(quán)的取值應(yīng)不同。在Displayable界面中加入Command組件的方法如下:publicvoidaddCommand(Commandcommand)參數(shù)command為事先定義好的Command組件實例。第8頁,課件共41頁,創(chuàng)作于2023年2月要點提示如果一個Displayable對象注冊了CommandListener事件監(jiān)聽器,那么,點擊該Displayable界面上的所有Command按鈕都會觸發(fā)同一個commandAction()方法的執(zhí)行,因此在該方法中通常要用if語句或switch語句來區(qū)分不同的按鈕,以實現(xiàn)不同的功能。區(qū)分方法有多種,比如:if(command.getCommandType()==Command.EXIT){}該方法是通過在定義按鈕時設(shè)定的按鈕類型來區(qū)分各按鈕。請注意,如果同類型按鈕有多個,該法就不適用了。if(command.getLabel().equals("Exit")){}該方法是通過按鈕表面的提示文字來區(qū)分各按鈕。if(command==cmdExit){}該方法是通過使用事先定義好的按鈕名稱來區(qū)分各按鈕。第9頁,課件共41頁,創(chuàng)作于2023年2月3.2.4延伸任務(wù):返回主菜單第10頁,課件共41頁,創(chuàng)作于2023年2月要點提示MIDlet類實例是在手機游戲運行前,由系統(tǒng)構(gòu)造的,在游戲運行期間是唯一的。也就是說,MIDlet類實例不能由用戶構(gòu)造。因此,在本任務(wù)中,通過聲明一個靜態(tài)的MIDlet類實例instance,并在構(gòu)造方法中進行實例化。這樣,就可以在其他類中直接通過MIDlet類的類名進行調(diào)用。在手機這樣的資源受限設(shè)備中,要嚴格控制使用new方法實例化對象的次數(shù)。而且使用new方法生成的兩個對象實際上是兩個獨立的個體,在操作上不會實現(xiàn)同步。因此,在本任務(wù)中,通過構(gòu)造方法參數(shù)來傳遞返回對象,將需要返回的界面(myMenu)作為參數(shù),傳遞到About類對象中。這樣,在進入About界面前,和從About界面返回后,顯示的是同一個菜單界面實例。這一點,可以從返回前后,當(dāng)前菜單項都是“關(guān)于游戲”得到驗證第11頁,課件共41頁,創(chuàng)作于2023年2月3.2.5任務(wù)二:使用圖片或文字按鈕響應(yīng)菜單命令第12頁,課件共41頁,創(chuàng)作于2023年2月要點提示
Command組件構(gòu)造的“功能按鈕”可以加在所有Displayable類的子類上,包括高級界面組件和低級界面組件。響應(yīng)這類按鈕需要由Displayable對象注冊一個CommandListener事件監(jiān)聽器,然后通過實現(xiàn)在該接口中定義的commandAction()方法進行按鈕的響應(yīng)。而由圖片和文字構(gòu)造的“功能按鈕”只能加在低級界面(Canvas和GameCanvas)上。在實際的游戲開發(fā)中,設(shè)計并使用與游戲整體風(fēng)格相適應(yīng)的圖片或文字按鈕,會使游戲界面更加美觀、更具個性。當(dāng)用戶按下鍵盤上的“左上”或“右上”功能鍵去響應(yīng)這類按鈕時,系統(tǒng)會自動響應(yīng),并調(diào)用相應(yīng)的按鍵處理方法(比如:keyPressed()方法)進行處理。第13頁,課件共41頁,創(chuàng)作于2023年2月3.3使用線程控制游戲進程游戲有一定的幀頻,需要通過線程來控制。在本學(xué)習(xí)單元中,首先,通過多閃屏的實現(xiàn),來學(xué)習(xí)使用線程;然后,再對游戲時間進行倒計時的控制,進一步熟悉線程;最后,對線程進行深入使用,實現(xiàn)對游戲的開始、暫停、繼續(xù)和重玩的控制。第14頁,課件共41頁,創(chuàng)作于2023年2月3.3.2知識準備:了解多線程多線程允許在程序中并發(fā)執(zhí)行多個處理流程,每個處理流程都成為一個線程,彼此間相互獨立。多線程的好處在于可以提高CPU的利用率。但也必須認識到使用多線程可能帶來的不利因素,比如:線程也是程序,需要占用內(nèi)存。多線程需要協(xié)調(diào)和管理,線程太多會導(dǎo)致控制太復(fù)雜。線程之間對共享資源的訪問會產(chǎn)生沖突。第15頁,課件共41頁,創(chuàng)作于2023年2月3.3.3任務(wù)三:實現(xiàn)多閃屏第16頁,課件共41頁,創(chuàng)作于2023年2月要點提示1:線程的實現(xiàn)在Java中實現(xiàn)線程有兩種途徑:繼承java.lang.Thread類,然后改寫run()方法實現(xiàn)java.lang.Runnable接口,實現(xiàn)接口中的run()方法由于Java語言不支持多繼承,所以繼承java.lang.Thread類的方法有一個最大的缺點就是不能再繼承其他的類。而實現(xiàn)java.lang.Runnable接口的方法只需在已有類的基礎(chǔ)之上多實現(xiàn)一個run()方法,沒有其他多余的負擔(dān)。因此建議多使用該方法實現(xiàn)線程。第17頁,課件共41頁,創(chuàng)作于2023年2月要點提示2:線程的啟動和停止啟動線程:Threadt=newThread(this);t.start();停止線程:正常情況下,run()方法返回時,線程自動停止。調(diào)用stop()或destroy()方法也可使線程停止,但會產(chǎn)生異常,且不會釋放同步資源,所以不推薦使用。第18頁,課件共41頁,創(chuàng)作于2023年2月要點提示3:線程的控制在run()方法中,線程通常使用一個while循環(huán)來控制。在循環(huán)的開始,獲取一次循環(huán)的開始時間(st)。循環(huán)的最后,獲取本次循環(huán)的結(jié)束時間(et)。如果結(jié)束時間和開始時間的差值(diff=et-st),小于每一幀的指定時間(rate),就讓線程休眠一個(rate-diff)的差值時間。這樣可以強制使每一幀運行時間固定,避免游戲產(chǎn)生忽快忽慢的晃動感覺。第19頁,課件共41頁,創(chuàng)作于2023年2月3.3.4任務(wù)四:實現(xiàn)游戲時間的倒計時第20頁,課件共41頁,創(chuàng)作于2023年2月知識提煉:脫屏畫布脫屏畫布其實就是通常所說的繪制雙緩沖區(qū)技術(shù),是計算機動畫的一項傳統(tǒng)技術(shù)。在動畫制作中,造成屏幕閃爍的主要原因在于,畫面在顯示動畫的同時,程序又在改變它。如何解決這個矛盾呢?通常的做法是在內(nèi)存開辟一片區(qū)域作為后臺畫面,程序?qū)λM行更新、修改,完成后再在屏幕上顯示它。創(chuàng)建、使用脫屏畫布的關(guān)鍵步驟如下:(1)創(chuàng)建脫屏畫布Imagebuffer;buffer=Image.createImage(SCREENWIDTH,SCREENHEIGHT);(2)獲取脫屏畫筆GraphicsoffG=buffer.getGraphics();(3)改變脫屏畫布內(nèi)容offG.drawXXX();(4)將脫屏畫布內(nèi)容顯示到屏幕上g.drawImage(buffer,0,0,g.LEFT|G.TOP);第21頁,課件共41頁,創(chuàng)作于2023年2月3.3.4任務(wù)五:
控制游戲的開始、暫停、繼續(xù)、重玩和返回游戲進行中游戲暫停游戲結(jié)束第22頁,課件共41頁,創(chuàng)作于2023年2月要點提示游戲的運行與停止、暫停與繼續(xù),分別通過一個開關(guān)變量來控制。在程序中,使用了boolean型變量isRun表示游戲是否進行中,變量isPause表示游戲是否暫停。在run()方法中,使用isRun變量作為while循環(huán)的條件,當(dāng)游戲沒有暫停的時候(!isPause),實現(xiàn)正常的游戲功能。當(dāng)按下“暫停”按鈕時,設(shè)置isPause變量的值為true。此時while循環(huán)中的if(!isPause)條件就不再成立,下面的語句也就不再執(zhí)行。但while循環(huán)還在繼續(xù),線程并沒有結(jié)束。當(dāng)按下“繼續(xù)”按鈕時,isPause變量的值又變?yōu)閒alse,if(!isPause)條件成立,繼續(xù)游戲。當(dāng)gameTime變量小于等于0時,設(shè)置isRun變量值為false,此時while循環(huán)結(jié)束,線程也隨之停止,游戲結(jié)束,顯示“重玩”按鈕。當(dāng)按下“重玩”按鈕時,調(diào)用init()方法重新初始化游戲,重新開始線程。第23頁,課件共41頁,創(chuàng)作于2023年2月3.3.6知識拓展:了解MIDlet的生命周期
Java應(yīng)用管理器(JAM)是管理Java應(yīng)用的機制,它負責(zé)將MIDlet裝載進來,生成一個MIDlet對象實例。該對象的生命周期完全由JAM控制。MIDlet應(yīng)用程序的構(gòu)造方法僅被JAM調(diào)用一次,開發(fā)人員不能通過new方法隨時調(diào)用。通常將需要在程序啟動時執(zhí)行一次且只執(zhí)行一次的操作放在構(gòu)造方法中,用來初始化MIDlet狀態(tài)。一個MIDle對象有三種狀態(tài):運行狀態(tài)、暫停狀態(tài)和終止狀態(tài)。
MIDlet類中聲明了三個抽象方法:
startApp():用于啟動或重新啟動一個MIDlet。該方法可以被系統(tǒng)在任何時候調(diào)用,其目的是請求或重新請求運行MIDlet所需要的資源。
pauseApp():用于暫停一個MIDlet的運行,以釋放此MIDlet占用的資源而用于其他MIDlet的運行。
destroyApp():在MIDlet即將被撤消時由系統(tǒng)調(diào)用,也可由MIDlet自身間接調(diào)用,其目的是在MIDlet撤消前釋放該MIDlet所占資源
需要說明的是,這三個方法體默認都是空的,想要實現(xiàn)開始、暫停和釋放資源的功能,需要用戶自行添加相應(yīng)的功能代碼。
JAM通過調(diào)用startApp()使MIDlet進入開始狀態(tài),調(diào)用pauseApp()使MIDlet進入暫停狀態(tài),調(diào)用destroyApp()使MIDlet進入終止狀態(tài)。需要說明的是,這三個方法體默認都是空的,想要實現(xiàn)開始、暫停和釋放資源的功能,需要用戶自行添加相應(yīng)的功能代碼。
MIDlet類中還定義了notify系列函數(shù),用于請求狀態(tài)的轉(zhuǎn)換。notifyPaused():MIDlet可以使用該方法通知JAM,MIDlet對象將自動進入暫停狀態(tài)。resumeRequest():調(diào)用該方法可以使MIDlet對象從暫停狀態(tài)重新進入激活狀態(tài)。調(diào)用該方法時,應(yīng)用程序一般處于暫停狀態(tài),但即使處在暫停狀態(tài)的應(yīng)用程序也可以處理異步事件,比如定時器timer。notifyDestroyed():該方法通知MIDlet對象已經(jīng)釋放了所有資源,并已將緩沖區(qū)數(shù)據(jù)保存到了永久存儲記錄中,已經(jīng)進入中止狀態(tài)。通常在調(diào)用該方法前,先調(diào)用destroyApp()方法,在該方法體中完成清除工作。第24頁,課件共41頁,創(chuàng)作于2023年2月高品質(zhì)的游戲依托于高品質(zhì)的畫面和音效等游戲資源,但手機畢竟屬于資源受限設(shè)備,在載入這些高品質(zhì)的游戲資源時,將會出現(xiàn)用戶界面的停滯,用戶會誤以為程序不響應(yīng)或者是死機了。此時,就需要使用某種方式來提示用戶資源的載入情況。比如,可以使用進度條來提醒用戶正在進行“讀取數(shù)據(jù)”或“載入資源”。
在本學(xué)習(xí)單元中,首先,通過高級用戶界面接口中的Gauge界面組件來制作簡單的進度條;然后,再使用填充矩形框的方式,通過查詢資源載入情況,來實時控制進度值。
3.4制作游戲加載進度條第25頁,課件共41頁,創(chuàng)作于2023年2月3.4.2任務(wù)六:用Gauge界面組件制作進度條第26頁,課件共41頁,創(chuàng)作于2023年2月知識提煉
Gauge界面組件的構(gòu)造方法如下:publicGauge(Stringlabel,booleaninteractive,intmaxValue,intinitalValue)由于NoneInteractiveGauge類繼承了Gauge類,因此在構(gòu)造方法中,需要首先實現(xiàn)super()方法,以調(diào)用父類Gauge類的構(gòu)造方法,語句如下:super("",false,10,0);第27頁,課件共41頁,創(chuàng)作于2023年2月要點提示顯然,交互的Gauge進度條是不能反映游戲加載情況的。而非交換的Gauge進度條,其進度值按照線程中設(shè)定的增幅和頻度自動完成遞增過程,不管游戲資源是否加載完畢,進度值的遞增頻率是不變的。這樣的進度條實際上也并不能真實地反映游戲資源的加載情況。第28頁,課件共41頁,創(chuàng)作于2023年2月3.4.3知識準備:了解對象池的概念象手機這樣的資源受限設(shè)備,內(nèi)存是很緊張的。如果在游戲進行過程中,還需不斷地動態(tài)生成對象或載入資源,游戲就會停滯,影響體驗效果。所以在程序中應(yīng)盡量使用預(yù)先分配好的資源,而不是在使用時動態(tài)分配。比如,可以在游戲主程序的構(gòu)造方法中,把需要動態(tài)產(chǎn)生的對象、資源都預(yù)先靜態(tài)生成,形成一個“對象池”,再在需要的時候使用它們。這樣,在游戲開始前,會產(chǎn)生片刻用戶界面的停滯。而游戲一旦開始,就不會再出現(xiàn)停滯現(xiàn)象。如果游戲資源都是在類的構(gòu)造方法中預(yù)先靜態(tài)生成,那么只要資源載入沒有完成,類就不會構(gòu)造成功。此時,查詢類的實例,就是一個空值。相反,如果類構(gòu)造成功了,說明資源已經(jīng)載入完畢,查詢的結(jié)果也就不會是空值了。第29頁,課件共41頁,創(chuàng)作于2023年2月3.4.4任務(wù)七:使用填充矩形框的方式制作進度條第30頁,課件共41頁,創(chuàng)作于2023年2月要點提示1:關(guān)于getInstance()方法在程序中,類的實例通常使用“New構(gòu)造方法”的方式來創(chuàng)建。如果一個類被多個其他類調(diào)用,那么就會在程序中產(chǎn)生這個類的多個實例。在本任務(wù)中,采用自定義一個靜態(tài)的getInstance()方法來獲得類的實例。這樣就可以做到在整個程序中只存在一個類的實例。因為在靜態(tài)方法中,只能使用靜態(tài)變量,所以在程序中,首先定義了一個靜態(tài)的類變量instance,在getInstance()方法中,判斷該變量是否為空,如果為空,則先使用構(gòu)造方法創(chuàng)建實例,然后返回;如果不為空,則直接返回該變量。方法如下:privatestaticGameBodyinstance;publicstaticGameBodygetInstance(){if(instance==null){instance=newGameBody();}returninstance;}第31頁,課件共41頁,創(chuàng)作于2023年2月要點提示2:關(guān)于進度條前進的間隔
程序在正常載入資源的狀態(tài)下,進度條前進間隔按每100ms增加5的速度遞增。如果進度值還沒有到達100%,但資源已經(jīng)加載完畢,就加大進度條前進的間隔,以加快前進速度。if(GameBody.getInstance()!=null){step+=50;}
如果進度值已經(jīng)到達100%,但資源加載還沒有完畢,進度值就減小1,使其處于99%的狀態(tài)等待。就像大多數(shù)Windows安裝程序一樣,最后的1%總是要花費較長的時間等待。
if(progress>100){//如果進度值已經(jīng)到了終值(100)
if(GameBody.getInstance()==null){//如果游戲還未加載完畢
progress-=1;//進度值減小1,在99%處等待。
}else{//如果游戲已經(jīng)加載完畢
break;//結(jié)束while循環(huán)
}}第32頁,課件共41頁,創(chuàng)作于2023年2月3.5搭建手機游戲制作框架
在前面的各項任務(wù)中,分別完成了閃屏、菜單、幫助、關(guān)于、進度條和游戲倒計時界面的制作。在本學(xué)習(xí)單元中,首先,把這些界面類快速地關(guān)聯(lián)起來,構(gòu)成一個簡單的手機游戲框架;然后,再進行任務(wù)重構(gòu),通過狀態(tài)變量來區(qū)分游戲進程中的各個過程,將在這些界面類中分別實現(xiàn)的功能,有序地合并到一個Canvas類中完成。使得代碼緊湊有序,不僅提高了代碼的質(zhì)量,還減少了垃圾回收的負擔(dān)。第33頁,課件共41頁,創(chuàng)作于2023年2月3.5.2任務(wù)八:快速搭建手機游戲制作框架第34頁,課件共41頁,創(chuàng)作于2023年2月3.5.3延伸任務(wù):使用狀態(tài)變量控制游戲進程菜單界面
游戲加載
關(guān)于游戲游戲幫助在本任務(wù)中,將上述各界面類合并到一個Canvas中完成。通過狀態(tài)變量m_UIState來區(qū)分游戲進程中的各個過程。m_UIState變量的值和游戲進程之間的對應(yīng)關(guān)系如下表所示。閃屏界面
第35頁,課件共41頁,創(chuàng)作于2023年2月本章小結(jié)1/51.在Java中實現(xiàn)線程有兩種途徑:一種是繼承java.lang.Thread類,然后改寫run()方法;另一種是實現(xiàn)java.lang.Runnable接口的run()方法。線程通過start()方法啟動,在run()方法中控制。當(dāng)run()方法運行結(jié)束,線程相應(yīng)終止。2.脫屏畫布就是通常所說的繪制雙緩沖區(qū)技術(shù),能有效地緩解屏幕閃爍。創(chuàng)建、使用脫屏畫布的關(guān)鍵步驟如下:(1)創(chuàng)建脫屏畫布Imagebuffer;buffer=Image.createImage(SCREENWIDTH,SCREENHEIGHT);(2)獲取脫屏畫筆:GraphicsoffG=buffer.getGraphics();(3)改變脫屏畫布內(nèi)容:offG.drawXXX();(4)將脫屏畫布內(nèi)容顯示到屏幕上:g.drawImage(buffer,0,0,g.LEFT|G.TOP);第36頁,課件共41頁,創(chuàng)作于2023年2月本章小結(jié)2/53.Gauge界面組件是Item類的子類,是一個采用條形圖代表具體取值的進度條,可以被放置在Form組件中。Gauge界面組件可以是交互的,也可以是不交互的。Gauge界面組件的構(gòu)造方法如下:
publicGauge(Stringlabel,booleaninteractive,intmaxValue,intinitalValue)4.制作進度條的核心思想是:如果游戲資源都是在類的構(gòu)造方法中預(yù)先靜態(tài)生成,即形成一個“對象池”。那么只要資源載入沒有完成,類就不會構(gòu)造成功。此時,查詢類的實例,就是一個空值。相反,如果類構(gòu)造成功了,說明資源已經(jīng)載入完畢,查詢的結(jié)果也不會是空值了。在運行時,如果進度值還沒有到達100%,但資源已經(jīng)加載完畢,就應(yīng)該加大進度條前進的間隔,以加快前進速度。如果進度值已經(jīng)到達100%,但資源加載還沒有完畢,應(yīng)該使進度條始終處于99%的狀態(tài)等待。第37頁,課件共41頁,創(chuàng)作于2023年2月本章小結(jié)3/55.在java.microedition.lcdui包中共定義了三種事件監(jiān)聽器,以接口的形式存在,分別為:CommandListener、ItemStateListener和ItemCommandListener。在MIDP框架中實現(xiàn)事件處理需要做如下三件事情:(1)在類定義中加入implenents子句,表示在該類中要實現(xiàn)接
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 海洋浮標工安全實操知識考核試卷含答案
- 炭素制品工崗前基礎(chǔ)驗收考核試卷含答案
- 2025吉林長春新區(qū)高新開發(fā)區(qū)面向社會公開招聘“社工崗”普通工作人員18人備考題庫附答案
- 2025年上海立信會計金融學(xué)院輔導(dǎo)員考試參考題庫附答案
- 機械密封件制造工崗前工作實操考核試卷含答案
- 生活燃煤供應(yīng)工安全應(yīng)急考核試卷含答案
- 礦井泵工誠信道德競賽考核試卷含答案
- 溫差電器件制造工安全防護考核試卷含答案
- 2024年湖北醫(yī)藥學(xué)院輔導(dǎo)員招聘考試真題匯編附答案
- 急性心肌梗死后心律失常護理課件
- 產(chǎn)品供貨方案、售后服務(wù)方案
- 十八而志夢想以行+活動設(shè)計 高三下學(xué)期成人禮主題班會
- 2023年上海華東理工大學(xué)機械與動力工程學(xué)院教師崗位招聘筆試試題及答案
- TOC供應(yīng)鏈物流管理精益化培訓(xùn)教材PPT課件講義
- 醫(yī)院18類常用急救藥品規(guī)格清單
- 放棄公開遴選公務(wù)員面試資格聲明
- 2023-2024學(xué)年江蘇省海門市小學(xué)語文五年級期末點睛提升提分卷
- GB/T 1685-2008硫化橡膠或熱塑性橡膠在常溫和高溫下壓縮應(yīng)力松弛的測定
- 北京城市旅游故宮紅色中國風(fēng)PPT模板
- DB42T1319-2021綠色建筑設(shè)計與工程驗收標準
評論
0/150
提交評論