程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> J2ME >> 游戲中動畫的基礎

游戲中動畫的基礎

編輯:J2ME

游戲的基礎是動畫,想來大家都知道。這幾天公司的項目都忙完了。很是無聊,所以就上網找了些資源,並寫兩個動畫的例子。在此貼出來,讓大家把磚頭砸我吧。^_^
J2ME midp2.0有個game的包是用來設計有游戲用的。它供給了游戲設計的基礎控件,比如雙緩沖,精靈,圖層把持器等基礎設施,這些設施可以方便我們的設計,比如雙緩沖可以讓游戲履行流暢,精靈等,可以更好的把持角色。
說白了。動畫的後果實在就是一幅幅圖片按照指定的時間一幅幅的換圖片而已。
好了。看代碼吧。

Java 代碼

  1. package org.wuhua.game.timer;

  2. import Java.util.Timer;
  3. import Java.util.TimerTask;
  4. /** * 對Timer的包裝
  5. * @author wuhua
    */
  6. public class TimerTaskManager { private Timer _timer;

  7. static TimerTaskManager instace;

  8. public static TimerTaskManager getInstace() {
  9. if (instace == null) instace = new TimerTaskManager();
  10. return instace; }

  11. public TimerTask add(Runnable runnable, long period) {
  12. TimerTask task = new RunnableTimerTask(runnable); long delay = period;
  13. getTimer().schedule(task, delay, period); return task;
  14. }
  15. void close() { if (_timer != null) {
  16. _timer.cancel(); _timer = null;
  17. } }

  18. private Timer getTimer() {
  19. if (_timer == null) _timer = new Timer();
  20. return _timer; }

  21. static class RunnableTimerTask extends TimerTask {
  22. private Runnable _runnable;
  23. RunnableTimerTask(Runnable runnable) { _runnable = runnable;
  24. }
  25. public void run() { _runnable.run();
  26. } }
  27. }
      Java 代碼

      1. package org.wuhua.game;

      2. import Java.io.IOException;
      3. import Java.util.TimerTask;
      4. import Javax.microedition.lcdui.Canvas; import Javax.microedition.lcdui.Graphics;
      5. import Javax.microedition.lcdui.Image;
      6. import org.wuhua.game.timer.TimerTaskManager;


      7. /** * 動畫的主類
      8. * @author wuhua
        */
      9. public class Game extends Canvas implements Runnable{
      10. private Image source; private Image action[] = new Image[10];
      11. private int bgcolor = 0x209C00; private TimerTask task;
      12. private static int next; Game(){
      13. try { source = Image.createImage("/action.png");
      14. } catch (IOException e) {
      15. e.printStackTrace(); }
      16. //切割圖片 for(int i=0; i<5; i++){
      17. action[i] = Image.createImage(source, 96*i, 0, 96, 60, 0); }

      18. for(int j=5; j<10; j++){
      19. action[j] = Image.createImage(source, 96*(j-5), 102, 96, 80, 0); }

      20. //這個是用來執舉動作的計時器。原理是請求經過0.2毫秒動一次
      21. task = TimerTaskManager.getInstace().add(this, 150); }
      22. protected void paint(Graphics g) { fillScreen(g);
      23. paintAction(g);
      24. } private void fillScreen(Graphics g) {
      25. g.setColor(0xFFFFFF); g.fillRect(0, 0, this.getWidth(), this.getHeight());

      26. }
      27. private void paintAction(Graphics g) { if(next == 10)
      28. next =0; //假如繪制的圖片是出雷電的時候,讓人物停留在那裡。這樣的後果會好點
      29. if(next>=5){ g.drawImage(action[4], 10*4, 0, Graphics.LEFT|Graphics.TOP);
      30. } g.drawImage(action[next], 10*next, 0, Graphics.LEFT|Graphics.TOP);


      31. next++;
      32. } public void run() {
      33. repaint();
      34. }


      35. }
    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved