Игровая кнопка

от
Android

Перейдя на программирование под Android с j2me столкнулся тем, что половину того, чем пользовался раньше, теперь нужно сделать самому. А именно - игровые библиотеки и то же сенсорное управление(а Nokia давала мне какой-никакой джойстик с A, B, C, D кнопками, хоть и не мультитач).
Соорудил свой первый громоздкий и монстро-if-овый джойстик, но пожалел позже, когда он оказался фиксированным и с ходу в нём было не разобраться, когда хотел его подправить. Решил, что так дело не пойдёт и запилил класс для игровой кнопки - GameButton. Класс очень простой, но работает в связке с View или Surface, принимая значения от event при касании экрана. Не мультитач. Но это решаемо при желании. Не придумав ничего нового, решил ориентироваться на Nokia'вский джой...
При инициализации кнопки Bitmap делится на два кадра - нажатая и отпущенная кнопка. Наш класс следит за координатами, куда мы попадаем пальцем и если это в пределах Bitmap'а то передаём переменной в Canvas'е, цифру заданную на эту кнопку(подобие кейкода).

Например эта переменная у нас int kc;
Попадая пальцем в кнопку с заданным числом скажем 2(ну или какое нам в голову придёт), обрабатуем:
  1. if( kc==2 ){ ... }
  2. if( kc==3 ){ ... }
или
  1. switch(kc){
  2. case 2:
  3. //делаем чего-нибудь
  4. break;
  5.  
  6. case 3:
  7. //аналогично
  8. break;
  9. }

Правда не нашёл ничего другого как сделать метод release() в классе для возврата кнопке исходного визуального состояния. Да и применять это надо в обработчике касаний:
  1. //событие отпускания
  2. case MotionEvent.ACTION_UP:
  3. kc = 0;
  4. наша_кнопка.release();
Тема эта больше для новичков. Не берусь утверждать, что это хороший способ. Но это работает. Прицепил исходники - там рабочая конструкция. Кому нужно - всё перепилит под себя. Короче вот такой вариант управления) game_button.png Game_button.zip
  • +2
  • views 1837