在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<abbr id="27omo"></abbr>

<menu id="27omo"><dl id="27omo"></dl></menu>
    • <label id="27omo"><tt id="27omo"></tt></label>

      新聞中心

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

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

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

      ■前言

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

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

      ■4-1

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

      ■4-1-1線程

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

      ■4-1-1-1線程的使用

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

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

      classTestCanvasextendsCanvasimplementsRunnable{

      /**

      *線程執(zhí)行的處理

      **/

      publicvoidrun(){

      //記述處理

      .

      .

      }

      /**

      *描繪方法

      **/

      publicvoidpaint(Graphicsg){

      //描繪處理

      .

      .

      }

      }

      ex.1

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

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

      Threadthread=newThread(runnable);

      thread.start();

      ex.2

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

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

      importjavax.microedition.lcdui.Display;

      importjavax.microedition.midlet.MIDlet;

      importjavax.microedition.midlet.MIDletStateChangeException;

      /**

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

      */

      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í)例動(dòng)畫(huà)的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){

      //清除畫(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線程的待機(jī)處理

      ■4-1-1-3線程的待機(jī)處理

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

      Figure1

      4-1-1

      -3線程的待機(jī)處理

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

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

      ex.4

      如此例所示,處理和處理之間能夠待機(jī)100毫秒,按另外觀點(diǎn)看,與在100毫秒的定期間隔下運(yùn)行處理是一樣的。定期間隔下的處理,使用名為T(mén)imer的類(lèi)同樣能夠?qū)崿F(xiàn)。下面說(shuō)明一下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類(lèi)和TimerTask類(lèi)能夠?qū)崿F(xiàn)計(jì)時(shí)器的功能。

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


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

      評(píng)論


      相關(guān)推薦

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

      關(guān)閉