<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 如何制作動(dòng)畫(huà)程序

如何制作動(dòng)畫(huà)程序

作者: 時(shí)間:2012-05-07 來(lái)源:網(wǎng)絡(luò ) 收藏

■前言

本文引用地址:http://dyxdggzs.com/article/149130.htm

在前一講中我們講述了利用低級API圖表應用的方法。如果僅僅是圖表內容的表示,那么在WEB上就可以用靜止的頁(yè)面表示。但是在手機應用中表示的話(huà),就能讓圖表內容具有動(dòng)感。這就是應用與WEB的區別,這也正是其優(yōu)點(diǎn)所在。在本講中我們將進(jìn)一步講述在手機應用程序中,并詳細介紹其具體操作方法。

■4-1

基本上,能夠表現出文字、圖形、圖片等的描繪位置和畫(huà)面自身的連續變化。目前的程序中,按下按鍵,就會(huì )實(shí)行既定的方法。直到實(shí)行完既定方法之后才能進(jìn)行其他方法操作。但是,表示動(dòng)畫(huà)過(guò)程中,不實(shí)行動(dòng)畫(huà)表示以外的方法就沒(méi)有什么意義,因此應該有必要在表示動(dòng)畫(huà)的同時(shí)也可以實(shí)行其他的方法。所以掌握線(xiàn)程和計時(shí)器技術(shù)的知識和應用是必不可少的。接下來(lái),我們將詳細介紹線(xiàn)程和計時(shí)器。

■4-1-1線(xiàn)程

線(xiàn)程是執行程序的最小單位,用來(lái)執行Standalone的Java應用程序的main()方法。當你需要同步執行多個(gè)操作,可以用多線(xiàn)程并發(fā)執行。使用這種線(xiàn)程的程序被稱(chēng)為“多線(xiàn)程程序”。

■4-1-1-1線(xiàn)程的使用

首先我們盡快學(xué)習怎樣使用“線(xiàn)程”。有兩種方法能使用線(xiàn)程:Runnable接口的使用方法和Thread類(lèi)的繼承類(lèi)的定義方法。在此,我們使用前一個(gè)方法—實(shí)現Runnable接口的方法。

實(shí)現Runnable接口的類(lèi)必須要覆蓋run()方法。覆蓋的run()方法中記述了用線(xiàn)程執行的處理。(ex.1)

classTestCanvasextendsCanvasimplementsRunnable{

/**

*線(xiàn)程執行的處理

**/

publicvoidrun(){

//記述處理

.

.

}

/**

*描繪方法

**/

publicvoidpaint(Graphicsg){

//描繪處理

.

.

}

}

ex.1

另外一種方法是使用線(xiàn)程類(lèi)Thread。如下所示:用構造函數傳遞一個(gè)參數到該類(lèi)的實(shí)例,該參數是實(shí)現Runnable接口的。使用start()方法就啟動(dòng)該線(xiàn)程了。(ex.2)

Runnablerunnable=newTestCanvas();//實(shí)現Runnable類(lèi)

Threadthread=newThread(runnable);

thread.start();

ex.2

■4-1-1-2簡(jiǎn)單的動(dòng)畫(huà)

接著(zhù)我們來(lái)看線(xiàn)程被用于制作簡(jiǎn)單的動(dòng)畫(huà)。在下面的實(shí)例中,球從左向右運動(dòng)。(ex.3)

importjavax.microedition.lcdui.Display;

importjavax.microedition.midlet.MIDlet;

importjavax.microedition.midlet.MIDletStateChangeException;

/**

*球飛出去的實(shí)例動(dòng)畫(huà)

*/

publicclassMovingBallextendsMIDlet{

privateDisplaydisplay;

privateMovingBallCanvascanvas;

/**

*構造函數

*/

publicMovingBall(){

display=Display.getDisplay(this);

canvas=newMovingBallCanvas();

}

/**

*運行時(shí)的處理

*/

protectedvoidstartApp()throwsMIDletStateChangeException{

display.setCurrent(canvas);

}

protectedvoidpauseApp(){}

protectedvoiddestroyApp(booleanarg0)throwsMIDletStateChangeException{}

}

importjavax.microedition.lcdui.Canvas;importjavax.microedition.lcdui.Graphics;

/**

*球飛出去的實(shí)例動(dòng)畫(huà)的canvas。

*/

publicclassMovingBallCanvasextendsCanvasimplementsRunnable{

privateintx;//球的X坐標

/**

*構造函數

*/

publicMovingBallCanvas(){

Threadth=newThread(this);

th.start();

}

/**

*線(xiàn)程運行的處理

*/

publicvoidrun(){

while(true){

x+=3;//更改球的坐標

repaint();//再次描繪

try{

Thread.sleep(100);//100毫秒待機

}catch(InterruptedExceptione){

}

}

}

/**

*描繪方法

*/

protectedvoidpaint(Graphicsg){

//清除畫(huà)面

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線(xiàn)程的待機處理

■4-1-1-3線(xiàn)程的待機處理

我們看看run()是如何支持等待機制的。如果沒(méi)有任何等待,球會(huì )迅速從左向右飛而我們無(wú)法察覺(jué)。為此,執行Thread中的靜態(tài)方法sleep。在其參數中指定等待時(shí)間(單位毫秒)。(ex.4)

Figure1

4-1-1

-3線(xiàn)程的待機處理

我們看看run()是如何支持等待機制的。如果沒(méi)有任何等待,球會(huì )迅速從左向右飛而我們無(wú)法察覺(jué)。為此,執行Thread中的靜態(tài)方法sleep。在其參數中指定等待時(shí)間(單位毫秒)。(ex.4)

Thread.sleep(100);//100毫秒待機

ex.4

如此例所示,處理和處理之間能夠待機100毫秒,按另外觀(guān)點(diǎn)看,與在100毫秒的定期間隔下運行處理是一樣的。定期間隔下的處理,使用名為T(mén)imer的類(lèi)同樣能夠實(shí)現。下面說(shuō)明一下Timer。

■4-1-2Timer

JAVA提供了計時(shí)器功能,它能有規則地、重復地執行或者在指定時(shí)間里執行。線(xiàn)程的運算可以是連續的,而不僅僅是按規則的進(jìn)度。計時(shí)器的便利在于系統已經(jīng)為你準備好特定的方法用于在指定時(shí)間或定時(shí)執行。

■4-1-2-1時(shí)間的使用

Timer類(lèi)和TimerTask類(lèi)能夠實(shí)現計時(shí)器的功能。

實(shí)例化一個(gè)TIMER的類(lèi),再調用一個(gè)繼承了TIMERTASK的類(lèi)做SCHEDULE。這樣,TimerTask子類(lèi)的run()就會(huì )在指定時(shí)間或周期被Timer實(shí)例呼叫。(表1)


上一頁(yè) 1 2 3 4 5 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>