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

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

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

    饒榮慶 -- 您今天UCWEB了嗎?--http://www.ucweb.com

    3G 手機開發網

       :: 首頁 :: 聯系 :: 聚合  :: 管理
      99 Posts :: 1 Stories :: 219 Comments :: 0 Trackbacks

    實現游戲中的簡單打字功能

    http://www.3geye.net/bbs/thread-168-1-1.html
     
    本文講述如何在游戲開發中實現類似于打字的功能,其實原理和前面講述的文字滾屏差別不大,主要還是利用Timer和Canvas提供的函數。

        我們的目的是把幾個字按照順序和一定的時間間隔打印在屏幕上,這就要求我們計算好文字的寬度和具體打印的位置。例如這樣一個數組
        private final String[] content = { "hello ", "world ", "who ", "are ","you ", "?" };
    我使用的辦法是計算它們的相對距離,這樣我用一個int類型的數組來存儲這些數值。
        private int[] slen = new int[content.length];
    slen[0]存儲字開始打印的位置,這里我設置為10,slen[1]則存儲開始位置與hello這個字的長度之和作為下個單詞world的開始位置,依次類推。
        private void initSlen()
        {

            int temp = 10;

            for (int i = 0; i < content.length; i++)
            {
                slen = temp;
                temp = temp + font.stringWidth(content);

            }
        }
    注意這里并沒有考慮屏幕寬度的因素,如果你要顯示多行的話應該考慮到屏幕的寬度,調整你的算法。

        在paint()方法里面我們就按照得到的坐標位置進行繪畫
        protected void paint(Graphics arg0)
        {
            if (first)
            {
                arg0.setColor(128, 0, 128);
                arg0.fillRect(0, 0, getWidth(), height);
                first = false;

            }
            arg0.setColor(255, 255, 255);

            arg0.setFont(font);
            arg0.drawString(content, slen, height / 2, Graphics.LEFT
                    | Graphics.TOP);
        }
    程序并不復雜,下面給出源代碼。

    import javax.microedition.lcdui.Display;
    import javax.microedition.midlet.MIDlet;
    import javax.microedition.midlet.MIDletStateChangeException;

    public class TypeMIDlet extends MIDlet
    {

        private Display display;
        private TypeCanvas typeCanvas;

        protected void startApp() throws MIDletStateChangeException
        {

            display = Display.getDisplay(this);
            typeCanvas = new TypeCanvas();
            display.setCurrent(typeCanvas);

        }

        protected void pauseApp()
        {

        }

        protected void destroyApp(boolean arg0) throws MIDletStateChangeException
        {

        }

    }

    import java.util.Timer;
    import java.util.TimerTask;

    import javax.microedition.lcdui.Canvas;
    import javax.microedition.lcdui.Display;
    import javax.microedition.lcdui.Displayable;
    import javax.microedition.lcdui.Font;
    import javax.microedition.lcdui.Graphics;

    public class TypeCanvas extends Canvas
    {
        private Timer timer = new Timer();
        private int i = 0;
        private boolean first = true;
        private int height = getHeight();
        Font font = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD,
                Font.SIZE_MEDIUM);
        private final String[] content = { "hello ", "world ", "who ", "are ",
                "you ", "?" };
        private int[] slen = new int[content.length];

        public TypeCanvas()
        {
            super();
            initSlen();
            TypeTask tt = new TypeTask();
            timer.schedule(tt, 300, 300);

        }

        protected void paint(Graphics arg0)
        {
            if (first)
            {
                arg0.setColor(128, 0, 128);
                arg0.fillRect(0, 0, getWidth(), height);
                first = false;

            }
            arg0.setColor(255, 255, 255);

            arg0.setFont(font);
            arg0.drawString(content, slen, height / 2, Graphics.LEFT
                    | Graphics.TOP);
        }

        private void initSlen()
        {

            int temp = 10;

            for (int i = 0; i < content.length; i++)
            {
                slen = temp;
                temp = temp + font.stringWidth(content);

            }
        }

        private class TypeTask extends TimerTask
        {
            public void run()
            {

                if (i < content.length - 1)
                {
                    repaint();
                    i++;
                } else
                {
                    timer.cancel();
                }

            }
        }
    }



    爬蟲工作室 -- 專業的手機軟件開發工作室
    3G視線 -- 專注手機軟件開發
    posted on 2007-09-23 21:20 3G工作室 閱讀(584) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 最近2019中文免费字幕在线观看| 亚洲av无码专区青青草原| 日本免费在线中文字幕| 亚洲人成人无码网www电影首页| 国产精品免费久久久久久久久| 精品亚洲一区二区三区在线观看 | 国产一精品一AV一免费孕妇| 国产日本亚洲一区二区三区| a级毛片无码免费真人| 亚洲一区二区三区丝袜| 国产精品无码一二区免费| 国产AV日韩A∨亚洲AV电影| 亚洲午夜国产片在线观看| 国产在线精品一区免费香蕉| 亚洲精品高清国产一线久久| 一级毛片成人免费看免费不卡| 亚洲黄色片在线观看| 我想看一级毛片免费的| 免费的黄色的网站| 亚洲色欲一区二区三区在线观看| 无码人妻久久一区二区三区免费| 亚洲成a人片在线网站| 免费观看的av毛片的网站| 免费又黄又爽又猛大片午夜| 亚洲av无码国产精品色午夜字幕 | 日韩毛片一区视频免费| 亚洲精品无码久久久影院相关影片| 免费观看91视频| 亚洲人成毛片线播放| 无码不卡亚洲成?人片| 中文字幕乱码免费看电影| 亚洲国产成人精品久久| 国产又大又粗又硬又长免费| 国产麻豆成人传媒免费观看| 亚洲国产成+人+综合| 亚洲第一黄色网址| 69av免费视频| 一级做a爰片久久毛片免费陪| 老司机亚洲精品影院无码| 国产一卡二卡≡卡四卡免费乱码 | 亚洲精品一卡2卡3卡四卡乱码|