KeyBoard.ts 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. const { ccclass, property } = cc._decorator;
  2. import lib = require("../Library");
  3. import webView = require("../WebView");
  4. @ccclass
  5. export default class KeyBoard extends cc.Component {
  6. onLoad() {
  7. console.log("KeyBoard--onLoad");
  8. if(lib.openInWebview()){
  9. console.log("-----webview注册KeyBoard-----");
  10. webView.register(this.node);
  11. this.node.on('onDeviceUpdateData', this.onDeviceUpdateData, this);
  12. }
  13. //add node with screen touch listener
  14. let leftNode = new cc.Node();
  15. leftNode.setContentSize(cc.winSize.width / 2, 2000);
  16. leftNode.setPosition(-cc.winSize.width / 4, 0);
  17. this.node.addChild(leftNode);
  18. leftNode.on(cc.Node.EventType.TOUCH_START, () => {
  19. this.onKeyDown({ keyCode: cc.macro.KEY.a });
  20. });
  21. let rightNode = new cc.Node();
  22. rightNode.setContentSize(cc.winSize.width / 2, 2000);
  23. rightNode.setPosition(cc.winSize.width / 4, 0);
  24. this.node.addChild(rightNode);
  25. rightNode.on(cc.Node.EventType.TOUCH_START, () => {
  26. this.onKeyDown({ keyCode: cc.macro.KEY.d });
  27. });
  28. //add keyboard listener
  29. cc.systemEvent.on(cc.SystemEvent.EventType.KEY_DOWN, this.onKeyDown, this);
  30. }
  31. onDestroy() {
  32. //remove keyboard listener
  33. cc.systemEvent.off(cc.SystemEvent.EventType.KEY_DOWN, this.onKeyDown, this);
  34. }
  35. onKeyDown(event) {
  36. if (window.boy && window.boy.isValid && !window.gm.isGameOver) {
  37. switch (event.keyCode) {
  38. case cc.macro.KEY.a:
  39. window.boy.leftUp();
  40. break;
  41. case cc.macro.KEY.w:
  42. window.boy.up();
  43. break;
  44. case cc.macro.KEY.d:
  45. window.boy.rightUp();
  46. break;
  47. case cc.macro.KEY.j:
  48. window.boy.attack();
  49. break;
  50. case cc.macro.KEY.k:
  51. window.boy.autoAttack();
  52. break;
  53. case cc.macro.KEY.q:
  54. window.boy.forward(-1);
  55. break;
  56. case cc.macro.KEY.e:
  57. window.boy.forward(1);
  58. break;
  59. case cc.macro.KEY.r:
  60. window.boy.jump();
  61. break;
  62. case cc.macro.KEY.t:
  63. window.boy.cancelRun();
  64. break;
  65. //模拟:←为H0左手;→为H1右手;↑为F0左脚;↓为F1右脚;space为F2起跳
  66. //当H传过来时,改变人物转向;当F=0或1时,判定为走;当F=2时,判定为跳
  67. /////////////////////////////////
  68. case cc.macro.KEY.left:
  69. console.log("************");
  70. window.b_isLeft = true;
  71. window.boy.forward(-1);
  72. window.boy.cancelRun();
  73. break;
  74. case cc.macro.KEY.right:
  75. window.b_isLeft = false;
  76. window.boy.forward(1);
  77. window.boy.cancelRun();
  78. break;
  79. case cc.macro.KEY.up:
  80. window.boy.keepingRun = true;
  81. break;
  82. case cc.macro.KEY.down:
  83. window.boy.cancelRun();
  84. break;
  85. case cc.macro.KEY.space:
  86. if(window.b_isLeft){
  87. window.boy.leftUp();
  88. }else{
  89. window.boy.rightUp();
  90. }
  91. break;
  92. }
  93. }
  94. }
  95. //F:0:左 1:右 2:起跳 3:降落 -1: 无状态 T 0--无时间 -1:超时 H 0:左手 1:右手
  96. //人物状态:向左走;向右走;向左跳;向右跳
  97. //数据与动作之间的关系:当H传过来时,改变人物转向;当F=0或1时,判定为走;当F=2时,判定为跳
  98. onDeviceUpdateData(data) {
  99. console.log("来自游戏内----onDeviceUpdateData",data);
  100. if (data.H == 0) {
  101. console.log("改变人物转向:超左");
  102. window.b_isLeft = true;
  103. window.boy.forward(-1);
  104. window.boy.cancelRun();
  105. } else if (data.H == 1) {
  106. console.log("改变人物转向:超右");
  107. window.b_isLeft = false;
  108. window.boy.forward(1);
  109. window.boy.cancelRun();
  110. }
  111. if(data.F == 0){
  112. console.log("走步");
  113. window.boy.keepingRun = true;
  114. }else if(data.F == 1){
  115. console.log("走1步结束");
  116. window.boy.cancelRun();
  117. }
  118. if (data.F == 2) {
  119. console.log("起跳");
  120. if(window.b_isLeft){
  121. console.log("左上跳");
  122. window.boy.leftUp();
  123. }else{
  124. console.log("右上跳");
  125. window.boy.rightUp();
  126. }
  127. }
  128. }
  129. }