Зажатие нескольких клавиш одновременно в обычном Canvas

  1. import javax.microedition.lcdui.Canvas;
  2. import javax.microedition.lcdui.Graphics;
  3.  
  4. public class CanvasExample extends Canvas
  5. {
  6.     private boolean right, left, up, down;
  7.     private int x, y;
  8.  
  9.     public CanvasExample()
  10.     {
  11.         setFullScreenMode(true);
  12.  
  13.         x = getWidth()/2 - 25;
  14.         y = getHeight()/2 - 25;
  15.     }
  16.  
  17.     public void paint(Graphics g)
  18.     {
  19.         //белый фон
  20.         g.setColor(255, 255, 255);
  21.         g.fillRect(0, 0, getWidth(), getHeight());
  22.  
  23.         //квадратик, которым можно управлять, зажимая несколько клавиш
  24.         g.setColor(0, 0, 0);
  25.         g.fillRect(x, y, 50, 50);
  26.  
  27.         //управление этим квадратиком
  28.         if(right) {x+=3;}
  29.         if(left) {x-=3;}
  30.         if(down) {y+=3;}
  31.         if(up)  {y-=3;}
  32.  
  33.         repaint();
  34.  
  35.         try
  36.         {
  37.             Thread.sleep(1L);
  38.         }catch(InterruptedException ex)
  39.         {}
  40.     }
  41.  
  42.     private void handleKey(int gameKey, boolean flag)
  43.     {
  44.         switch(gameKey)
  45.         {
  46.             case RIGHT: right = flag; break;
  47.             case LEFT: left = flag; break;
  48.             case DOWN: down = flag; break;
  49.             case UP: up = flag; break;
  50.         }
  51.     }
  52.  
  53.     public void keyPressed(int key)
  54.     {
  55.         handleKey(getGameAction(key), true);
  56.     }
  57.  
  58.     public void keyReleased(int key)
  59.     {
  60.         handleKey(getGameAction(key), false);
  61.     }
  62.  
  63. }
Если использовать такой способ для обработки нажатия клавиш, то можно зажимать несколько клавиш одновременно :)

Мы в соцсетях

vk tw tg yt

Пожертвования

Аноним2850 р.
Freddy1700 р.
riseremi1611 р.
NaruTrey800 р.
vlavolk637 р.
  © aNNiMON (Melnik Software)