📄 audiomain.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 + -