您的位置:網(wǎng)站首頁 > 電器維修資料網(wǎng) > 正文 >
如何在手機(jī)應(yīng)用程序中制作動畫
來源: 日期:2013-11-5 23:27:49 人氣:標(biāo)簽:
基本上,動畫能夠表現(xiàn)出文字、圖形、圖片等的描繪位置和畫面自身的連續(xù)變化。目前的程序中,按下按鍵,就會實(shí)行既定的方法。直到實(shí)行完既定方法之后才能進(jìn)行其他方法操作。但是,表示動畫過程中,不實(shí)行動畫表示以外的方法就沒有什么意義,因此應(yīng)該有必要在表示動畫的同時(shí)也可以實(shí)行其他的方法。所以掌握線程和計(jì)時(shí)器技術(shù)的知識和應(yīng)用是必不可少的。接下來,我們將詳細(xì)介紹線程和計(jì)時(shí)器。
■4-1-1線程
線程是執(zhí)行程序的 小單位,用來執(zhí)行standalone的java應(yīng)用程序的main()方法。當(dāng)你需要同步執(zhí)行多個(gè)操作,可以用多線程并發(fā)執(zhí)行。使用這種線程的程序被稱為“多線程程序”。
■4-1-1-1線程的使用
首先我們盡快學(xué)習(xí)怎樣使用“線程”。有兩種方法能使用線程:runnable接口的使用方法和thread類的繼承類的定義方法。在此,我們使用前一個(gè)方法—實(shí)現(xiàn)runnable接口的方法。
實(shí)現(xiàn)runnable接口的類必須要覆蓋run()方法。覆蓋的run()方法中記述了用線程執(zhí)行的處理。(ex.1)
classtestcanvasextendscanvasimplementsrunnable{
/**
*線程執(zhí)行的處理
**/
publicvoidrun(){
//記述處理
.
.
}
/**
*描繪方法
**/
publicvoidpaint(graphicsg){
//描繪處理
.
.
}
}
ex.1
另外一種方法是使用線程類thread。如下所示:用構(gòu)造函數(shù)傳遞一個(gè)參數(shù)到該類的實(shí)例,該參數(shù)是實(shí)現(xiàn)runnable接口的。使用start()方法就啟動該線程了。(ex.2)
runnablerunnable=newtestcanvas();//實(shí)現(xiàn)runnable類
threadthread=newthread(runnable);
thread.start();
ex.2
■4-1-1-2制作簡單的動畫
接著我們來看線程如何被用于制作簡單的動畫。在下面的實(shí)例中,球從左向右運(yùn)動。(ex.3)
importjavax.microedition.lcdui.display;
importjavax.microedition.midlet.midlet;
importjavax.microedition.midlet.midletstatechangeexception;
/**
*球飛出去的實(shí)例動畫
*/
publicclassmovingballextendsmidlet{
privatedisplaydisplay;
privatemovingballcanvascanvas;
/**
*構(gòu)造函數(shù)
*/
publicmovingball(){
display=display.getdisplay(this);
canvas=newmovingballcanvas();
}
/**
*運(yùn)行時(shí)的處理
*/
protectedvoidstartapp()throwsmidletstatechangeexception{
display.setcurrent(canvas);
}
protectedvoidpauseapp(){}
protectedvoiddestroyapp(booleanarg0)throwsmidletstatechangeexception{}
}
importjavax.microedition.lcdui.canvas;importjavax.microedition.lcdui.graphics;
/**
*球飛出去的實(shí)例動畫的canvas。
*/
publicclassmovingballcanvasextendscanvasimplementsrunnable{
privateintx;//球的x坐標(biāo)
/**
*構(gòu)造函數(shù)
*/
publicmovingballcanvas(){
threadth=newthread(this);
th.start();
}
/**
*線程運(yùn)行的處理
*/
publicvoidrun(){
while(true){
x+=3;//更改球的坐標(biāo)
repaint();//再次描繪
try{
thread.sleep(100);//100毫秒待機(jī)
}catch(interruptedexceptione){
}
}
}
/**
*描繪方法
*/
protectedvoidpaint(graphicsg){
//清除畫面
g.setcolor(255,255,255);//白色
g.fillrect(0,0,getwidth(),getheight());
//表示球
g.setcolor(255,0,0);
g.fillarc(x,50,20,20,0,360);
}
}
figure1
■4-1-1-3線程的待機(jī)處理
■4-1-1-3線程的待機(jī)處理
我們看看run()是如何支持等待機(jī)制的。如果沒有任何等待,球會迅速從左向右飛而我們無法察覺。為此,執(zhí)行thread中的靜態(tài)方法sleep。在其參數(shù)中指定等待時(shí)間(單位毫秒)。(ex.4)


figure1
■
4-1-1
-3線程的待機(jī)處理
我們看看run()是如何支持等待機(jī)制的。如果沒有任何等待,球會迅速從左向右飛而我們無法察覺。為此,執(zhí)行thread中的靜態(tài)方法sleep。在其參數(shù)中指定等待時(shí)間(單位毫秒)。(ex.4)
thread.sleep(100);//100毫秒待機(jī)
ex.4
如此例所示,處理和處理之間能夠待機(jī)100毫秒,按另外觀點(diǎn)看,與在100毫秒的定期間隔下運(yùn)行處理是一樣的。定期間隔下的處理,使用名為timer的類同樣能夠?qū)崿F(xiàn)。下面說明一下timer。
■4-1-2timer
java提供了計(jì)時(shí)器功能,它能有規(guī)則地、重復(fù)地執(zhí)行或者在指定時(shí)間里執(zhí)行。線程的運(yùn)算可以是連續(xù)的,而不僅僅是按規(guī)則的進(jìn)度。計(jì)時(shí)器的便利在于系統(tǒng)已經(jīng)為你準(zhǔn)備好特定的方法用于在指定時(shí)間或定時(shí)執(zhí)行。
■4-1-2-1時(shí)間的使用
timer類和timertask類能夠?qū)崿F(xiàn)計(jì)時(shí)器的功能。
實(shí)例化一個(gè)timer的類,再調(diào)用一個(gè)繼承了timertask的類做schedule。這樣,timertask子類的run()就會在指定時(shí)間或周期被timer實(shí)例呼叫。(表1)
- 1
- 2
- 3
- 4
- 5
- 下一頁
【看看這篇文章在百度的收錄情況】
相關(guān)文章
- 上一篇: 溫度傳感器定義及原理
- 下一篇: 淺談“虛短”與“虛斷”

