這篇文章是純粹的個(gè)人看法。
游戲的基礎(chǔ)是動(dòng)畫,想來大家都知道。這幾天公司的項(xiàng)目都忙完了。很是無(wú)聊,所以就上網(wǎng)找了些資源,并寫兩個(gè)動(dòng)畫的例子。在此貼出來,讓大家把磚頭砸我吧。^_^
j2me midp2.0有個(gè)game的包是用來設(shè)計(jì)有游戲用的。它提供了游戲設(shè)計(jì)的基礎(chǔ)控件,比如雙緩沖,精靈,圖層控制器等基礎(chǔ)設(shè)施,這些設(shè)施可以方便我們的設(shè)計(jì),比如雙緩沖可以讓游戲執(zhí)行流暢,精靈等,可以更好的控制角色。
說白了。動(dòng)畫的效果其實(shí)就是一幅幅圖片按照指定的時(shí)間一幅幅的換圖片而已。
好了。看代碼吧。
java 代碼
-
- package org.wuhua.game.timer;
-
- import java.util.Timer;
- import java.util.TimerTask;
-
-
-
-
-
- public class TimerTaskManager {
- private Timer _timer;
-
- static TimerTaskManager instace;
-
- public static TimerTaskManager getInstace() {
- if (instace == null)
- instace = new TimerTaskManager();
- return instace;
- }
-
- public TimerTask add(Runnable runnable, long period) {
- TimerTask task = new RunnableTimerTask(runnable);
- long delay = period;
- getTimer().schedule(task, delay, period);
- return task;
- }
-
- void close() {
- if (_timer != null) {
- _timer.cancel();
- _timer = null;
- }
- }
-
- private Timer getTimer() {
- if (_timer == null)
- _timer = new Timer();
- return _timer;
- }
-
- static class RunnableTimerTask extends TimerTask {
- private Runnable _runnable;
-
- RunnableTimerTask(Runnable runnable) {
- _runnable = runnable;
- }
-
- public void run() {
- _runnable.run();
- }
- }
- }
java 代碼
-
- package org.wuhua.game;
-
- import java.io.IOException;
- import java.util.TimerTask;
-
- import javax.microedition.lcdui.Canvas;
- import javax.microedition.lcdui.Graphics;
- import javax.microedition.lcdui.Image;
-
- import org.wuhua.game.timer.TimerTaskManager;
-
-
-
-
-
-
-
- public class Game extends Canvas implements Runnable{
-
- private Image source;
- private Image action[] = new Image[10];
- private int bgcolor = 0x209C00;
- private TimerTask task;
- private static int next;
- Game(){
- try {
- source = Image.createImage("/action.png");
- } catch (IOException e) {
-
- e.printStackTrace();
- }
-
- for(int i=0; i<5; i++){
- action[i] = Image.createImage(source, 96*i, 0, 96, 60, 0);
- }
-
- for(int j=5; j<10; j++){
- action[j] = Image.createImage(source, 96*(j-5), 102, 96, 80, 0);
- }
-
-
- task = TimerTaskManager.getInstace().add(this, 150);
- }
- protected void paint(Graphics g) {
- fillScreen(g);
- paintAction(g);
-
- }
- private void fillScreen(Graphics g) {
- g.setColor(0xFFFFFF);
- g.fillRect(0, 0, this.getWidth(), this.getHeight());
-
- }
- private void paintAction(Graphics g) {
- if(next == 10)
- next =0;
-
- if(next>=5){
- g.drawImage(action[4], 10*4, 0, Graphics.LEFT|Graphics.TOP);
- }
- g.drawImage(action[next], 10*next, 0, Graphics.LEFT|Graphics.TOP);
-
-
- next++;
-
- }
- public void run() {
- repaint();
-
- }
-
-
-
- }
|