KeyBoard.ts 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. const { ccclass, property } = cc._decorator;
  2. @ccclass
  3. export default class KeyBoard extends cc.Component {
  4. @property(cc.Node)
  5. btnScreenLeft: cc.Node = null;
  6. @property(cc.Node)
  7. btnScreenRight: cc.Node = null;
  8. public static Instance: KeyBoard;
  9. onLoad() {
  10. KeyBoard.Instance = this;
  11. this.btnScreenLeft.on(cc.Node.EventType.TOUCH_START, this.onClick_btnScreenLeft.bind(this));
  12. this.btnScreenRight.on(cc.Node.EventType.TOUCH_START, this.onClick_btnScreenRight.bind(this));
  13. cc.systemEvent.on(cc.SystemEvent.EventType.KEY_DOWN, this.onKeyDown, this);
  14. }
  15. onDestroy() {
  16. if (KeyBoard.Instance == this) KeyBoard.Instance = null;
  17. cc.systemEvent.off(cc.SystemEvent.EventType.KEY_DOWN, this.onKeyDown, this);
  18. }
  19. onClick_btnScreenLeft() {
  20. this.controlBoy(cc.macro.KEY.a);
  21. }
  22. onClick_btnScreenRight() {
  23. this.controlBoy(cc.macro.KEY.d);
  24. }
  25. onKeyDown(e: cc.Event.EventKeyboard) {
  26. this.controlBoy(e.keyCode);
  27. }
  28. controlBoy(keyCode: cc.macro.KEY) {
  29. let boy = window.boy;
  30. let gm = window.gm;
  31. if (!boy || !boy.isValid || gm.isGameOver) return;
  32. switch (keyCode) {
  33. case cc.macro.KEY.a:
  34. boy.leftUp();
  35. break;
  36. case cc.macro.KEY.w:
  37. boy.up();
  38. break;
  39. case cc.macro.KEY.d:
  40. boy.rightUp();
  41. break;
  42. case cc.macro.KEY.j:
  43. boy.attack();
  44. break;
  45. case cc.macro.KEY.k:
  46. boy.autoAttack();
  47. break;
  48. case cc.macro.KEY.q:
  49. boy.forward(-1);
  50. break;
  51. case cc.macro.KEY.e:
  52. boy.forward(1);
  53. break;
  54. case cc.macro.KEY.r:
  55. boy.jump();
  56. break;
  57. case cc.macro.KEY.t:
  58. boy.cancelRun();
  59. break;
  60. }
  61. }
  62. }