<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    游戲策劃咨訊
    做一個游戲并不難,難的是做一個好游戲;完美在于積累!
    使用MIDP(Mobile Information Device Profile)的開發(fā)人員經(jīng)常會抱怨用些什么辦法才可以在一個MIDlet上顯示動畫。MIDP 1.0 沒有直接提供對動畫的支持(正在開發(fā)中的MIDP 2.0支持),但真要是自己去實現(xiàn),其實也并非是一件很難的事。

    任何動畫的最基本的前提,是要在足夠快的時間內(nèi)顯示和更換一張張的圖片,讓人的眼睛看到動的畫面效果。圖片必須按照順序畫出來。從一張圖片到下一張圖片之間的變化越小,效果會越好。

    首先要做的,是使用你的圖片處理軟件(比如ps或者firework)創(chuàng)建一系列相同大小的圖片來組成動畫。每張圖片代表動畫一幀。

    你需要制作一定數(shù)量的禎--越多的幀會讓你的動畫看上去越平滑。制作好的圖片一定要保存成PNG(Portable Network Graphics) 格式,MIDP唯一支持的圖片格式;(有兩個辦法讓你剛做好的圖片在MIDlet上變成動畫。第一,把圖片都放到一個web服務(wù)器上,讓MIDlet下載他們,MIDP內(nèi)置的HTTP支持。第二個辦法更簡單,把圖片用MIDlet打包成jar文件。如果你使用的是J2ME開發(fā)工具,把PNG文件放在你的項目文件里面就可以了。

    動畫的過程其實更像帳本記錄:顯示當前幀,然后適當?shù)馗鼡Q到下一幀。那么使用一個類來完成這個工作應該是很恰當?shù)模呛茫覀兙拖榷x一個AnimatedImage類:

    import java.util.*;
    import javax.microedition.lcdui.*;
    // 定義了一個動畫,該動畫其實只是一系列相同大小的圖片
    // 輪流顯示,然后模擬出的動畫
    public class AnimatedImage extends TimerTask {;
    private Canvas canvas;
    private Image[] images;
    private int[][] clipList;
    private int current;
    private int x;
    private int y;
    private int w;
    private int h;

    // Construct an animation with no canvas.

    public AnimatedImage( Image[] images ){;
    this( null, images, null );
    };

    // Construct an animation with a null clip list.

    public AnimatedImage( Canvas canvas, Image[]
    images ){; this( canvas, images, null );
    };

    // Construct an animation. The canvas can be null,
    // but if not null then a repaint will be triggered
    // on it each time the image changes due to a timer
    // event. If a clip list is specified, the image is
    // drawn multiple times, each time with a different
    // clip rectangle, to simulate transparent parts.

    public AnimatedImage( Canvas canvas, Image[] images,
    int[][] clipList ){;
    this.canvas = canvas;
    this.images = images;
    this.clipList = clipList;

    if( images != null && clipList != null ){;
    if( clipList.length < images.length ){;
    throw new IllegalArgumentException();
    };
    };

    if( images != null && images.length > 0 ){;
    w = images[0].getWidth();
    h = images[0].getHeight();
    };
    };

    // Move to the next frame, wrapping if necessary.

    public void advance( boolean repaint ){;
    if( ++current >= images.length ){;
    current = 0;
    };

    if( repaint && canvas != null && canvas.isShown()
    ){;
    canvas.repaint( x, y, w, h );
    canvas.serviceRepaints();
    };
    };

    // Draw the current image in the animation. If
    // no clip list, just a simple copy, otherwise
    // set the clipping rectangle accordingly and
    // draw the image multiple times.

    public void draw( Graphics g ){;
    if( w == 0 || h == 0 ) return;

    int which = current;

    if( clipList == null || clipList[which] == null
    ){;
    g.drawImage( images[which], x, y,
    g.TOP | g.LEFT );
    }; else {;
    int cx = g.getClipX();
    int cy = g.getClipY();
    int cw = g.getClipWidth();
    int ch = g.getClipHeight();

    int[] list = clipList[which];

    for( int i = 0; i + 3 <= list.length; i +=
    4 ){;
    g.setClip( x + list[0], y + list[1],
    list[2], list[3] );
    g.drawImage( images[which], x, y,
    g.TOP | g.LEFT );
    };

    g.setClip( cx, cy, cw, ch );
    };
    };

    // Moves the animation's top left corner.

    public void move( int x, int y ){;
    this.x = x;
    this.y = y;
    };

    // Invoked by the timer. Advances to the next frame
    // and causes a repaint if a canvas is specified.

    public void run(){;
    if( w == 0 || h == 0 ) return;

    advance( true );
    };
    };

    posted on 2005-02-17 20:04 藍色雪焰 閱讀(348) 評論(0)  編輯  收藏 所屬分類: 編程技術(shù)
     
    主站蜘蛛池模板: 亚洲伊人久久综合中文成人网| 成人午夜免费福利| 亚洲精品字幕在线观看| jizz日本免费| 亚洲午夜久久久影院| yy一级毛片免费视频| 久久亚洲国产成人精品无码区| 免费一级毛片在线播放视频免费观看永久 | 羞羞网站免费观看| 亚洲国产aⅴ综合网| 国产免费播放一区二区| 亚洲伊人久久大香线蕉综合图片| 国产在线国偷精品免费看| 老司机亚洲精品影视www| 国色精品va在线观看免费视频| 久久精品亚洲一区二区| 最近免费中文字幕大全高清大全1| 亚洲人成在线影院| 免费毛片在线看片免费丝瓜视频| 亚洲国产欧美国产综合一区 | 亚洲精品成人无限看| 一区二区三区观看免费中文视频在线播放| 久久久久久亚洲av成人无码国产| 98精品全国免费观看视频| 亚洲成_人网站图片| 亚洲高清国产拍精品青青草原| 999zyz**站免费毛片| 亚洲视频一区在线观看| 青青青国产免费一夜七次郎 | 亚洲精品国产精品国自产网站| 好男人看视频免费2019中文| 日韩少妇内射免费播放| 亚洲国产精品无码av| 91成年人免费视频| 猫咪免费观看人成网站在线| 亚洲AV无码日韩AV无码导航| 女人张腿给男人桶视频免费版| 男女拍拍拍免费视频网站| 亚洲一卡二卡三卡| 亚洲精品一级无码鲁丝片| 免费观看美女用震蛋喷水的视频|