⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 audiomain.java

📁 播放mid音乐的demo,架构写的很好 大家看看吧 2008.05.22写的
💻 JAVA
字号:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */import javax.microedition.lcdui.Canvas;import javax.microedition.lcdui.Graphics;/** * @use main thread * @author Tony * @time 2008-05-22 */public class AudioMain extends Canvas implements Runnable {    static AudioMain me;    AudioMidlet mid = AudioMidlet.getInstance();    public long mi,  delay;    public static boolean blnThreadMain;    public static boolean blnPaint;    private static final short shtThreadTime = 80;    /**     * 按键变量     */    public static int processed_keyCode;    public static int keyReleasedStates;    public static int keyStates;    public static int keyRepeat;    public static boolean keyContinue;    public static int lastKeyStates;    public static int keyCounter;    public static int SCREENW;    public static int SCREENH;    private boolean blnAudio;    private int gameState;        public AudioMain(){        me = this;        SCREENW = 176;        SCREENH = 204;        gameState = 0;        Threadstart();        blnAudio = true;        playAudio(blnAudio);    }        public void run(){        while (blnThreadMain) {            try {                mi = System.currentTimeMillis();                if (keyCounter > 0) {                    keyCounter--;                }                flushGraphics();                if (keyReleasedStates != 0) {                    processed_keyCode = 0;                }                keyReleasedStates = 0;                delay = System.currentTimeMillis() - mi;                if (delay < shtThreadTime) {                    Thread.sleep(shtThreadTime - delay);                }            } catch (InterruptedException ie) {            }        }    }    private void Threadstart() {        Thread t = new Thread(this);        blnThreadMain = true;        t.start();        t.setPriority(Thread.MAX_PRIORITY);        blnPaint = true;    }        public static AudioMain getInstance() {        if (me == null) {            new AudioMain();        }        return me;    }            public void paint(Graphics g) {        keyRepeat = ~keyStates & processed_keyCode;        keyStates = processed_keyCode;        switch(gameState){            case 0 :                cleanFullScreen(g);                setColor(0xFFFFFF, g);                g.drawString("音乐  "+(blnAudio?"开":"关"), SCREENW>>1, SCREENH>>1, 17);                break;            case 1:                cleanFullScreen(g);                setColor(0xFFFF00, g);                g.drawString("press 5 ", SCREENW>>1, SCREENH>>1, 17);                if(keyConfirmCheck()){                    gameState = 0;                    blnAudio = true;                    playAudio(blnAudio);                }                break;        }            }        private void cleanFullScreen(Graphics g){        g.setClip(0, 0, SCREENW, SCREENH);        g.setColor(0);        g.fillRect(0, 0, SCREENW, SCREENH);    }        private void setColor(int i,Graphics g){        g.setColor(i);    }        public final void flushGraphics() {		 repaint();		 serviceRepaints();	 }        public void hideNotify(){        cleanKeyStates(1);        blnAudio = false;        playAudio(blnAudio);    }    public boolean isf = true;    public final void showNotify() {        if(!isf){        gameState = 1;        }else{            isf = false;        }    }        private void playAudio(boolean play){        if(play)            mid.au.play();        else            mid.au.stop();    }                 public static final void cleanKeyStates(int counter) {        keyCounter = counter;        keyStates = 0;        keyRepeat = 0;        processed_keyCode = 0;    }        /**     * Key     */    public static final int MY_KEY_NUM0 = 1,              MY_KEY_NUM1 = 2,  MY_KEY_NUM2 = 4,              MY_KEY_NUM3 = 8,  MY_KEY_NUM4 = 16,              MY_KEY_NUM5 = 32,  MY_KEY_NUM6 = 64,              MY_KEY_NUM7 = 128,  MY_KEY_NUM8 = 256,              MY_KEY_NUM9 = 512,  MY_KEY_STAR = 1024,              MY_KEY_POUND = 2048,  MY_KEY_PADUP = 4096,             MY_KEY_PADLEFT = 8192,  MY_KEY_PADFIRE = 16384,              MY_KEY_PADRIGHT = 32768,  MY_KEY_PADDOWN = 65536,             MY_KEY_LEFT_SOFT = 131072,  MY_KEY_RIGHT_SOFT = 262144,              MY_KEY_UP = MY_KEY_NUM2 | MY_KEY_PADUP,              MY_KEY_LEFT = MY_KEY_NUM4 | MY_KEY_PADLEFT,              MY_KEY_FIRE = MY_KEY_NUM5 | MY_KEY_PADFIRE,              MY_KEY_RIGHT = MY_KEY_NUM6 | MY_KEY_PADRIGHT,              MY_KEY_DOWN = MY_KEY_NUM8 | MY_KEY_PADDOWN;        public static final byte LEFT_SOFT = -21;    public static final byte RIGHT_SOFT = -22;    public static final byte UP_KEY = -1;    public static final byte DOWN_KEY = -6;    public static final byte LEFT_KEY = -2;    public static final byte RIGHT_KEY = -5;    public static final byte FIRE_KEY = -20;        private int getMyGameAction(int keyCode) {        int gameAction = 0;        switch (keyCode) {            case KEY_NUM0:                gameAction = MY_KEY_NUM0;                break;            case KEY_NUM1:                gameAction = MY_KEY_NUM1;                break;            case KEY_NUM2:                gameAction = MY_KEY_NUM2;                break;            case KEY_NUM3:                gameAction = MY_KEY_NUM3;                break;            case KEY_NUM4:                gameAction = MY_KEY_NUM4;                break;            case KEY_NUM5:                gameAction = MY_KEY_NUM5;                break;            case KEY_NUM6:                gameAction = MY_KEY_NUM6;                break;            case KEY_NUM7:                gameAction = MY_KEY_NUM7;                break;            case KEY_NUM8:                gameAction = MY_KEY_NUM8;                break;            case KEY_NUM9:                gameAction = MY_KEY_NUM9;                break;            case -UP_KEY:            case UP_KEY:                gameAction = MY_KEY_PADUP;                break;            case -LEFT_KEY:            case LEFT_KEY:                gameAction = MY_KEY_PADLEFT;                break;            case -FIRE_KEY:            case FIRE_KEY:                gameAction = MY_KEY_PADFIRE;                break;            case -RIGHT_KEY:            case RIGHT_KEY:                gameAction = MY_KEY_PADRIGHT;                break;            case -DOWN_KEY:            case DOWN_KEY:                gameAction = MY_KEY_PADDOWN;                break;            case KEY_STAR:                gameAction = MY_KEY_STAR;                break;            case KEY_POUND:                gameAction = MY_KEY_POUND;                break;            case -LEFT_SOFT:            case LEFT_SOFT:                gameAction = MY_KEY_LEFT_SOFT;                break;            case -RIGHT_SOFT:            case RIGHT_SOFT:                gameAction = MY_KEY_RIGHT_SOFT;                break;        }        return gameAction;    }        public void keyPressed(int _keyCode) {        if (keyCounter > 0) {            return;        }        processed_keyCode = getMyGameAction(_keyCode);    }    public void keyReleased(int _keyCode) {        keyContinue = false;        int temp_keyCode = getMyGameAction(_keyCode);        if ((keyStates & temp_keyCode) != 0) {            processed_keyCode &= ~temp_keyCode;            return;        } else {            keyReleasedStates |= temp_keyCode;            return;        }    }        private static boolean keyCheck(int keyresponse, int keycheck) {        return (keyresponse & keycheck) != 0;    }        public static boolean keyConfirmCheck() {        return keyCheck(keyRepeat, MY_KEY_LEFT_SOFT | MY_KEY_FIRE);    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -