| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- const { ccclass, property } = cc._decorator;
- import lib = require("../Library");
- import webView = require("../WebView");
- @ccclass
- export default class KeyBoard extends cc.Component {
- onLoad() {
- console.log("KeyBoard--onLoad");
- if(lib.openInWebview()){
- console.log("-----webview注册KeyBoard-----");
- webView.register(this.node);
- this.node.on('onDeviceUpdateData', this.onDeviceUpdateData, this);
- }
- //add node with screen touch listener
- let leftNode = new cc.Node();
- leftNode.setContentSize(cc.winSize.width / 2, 2000);
- leftNode.setPosition(-cc.winSize.width / 4, 0);
- this.node.addChild(leftNode);
- leftNode.on(cc.Node.EventType.TOUCH_START, () => {
- this.onKeyDown({ keyCode: cc.macro.KEY.a });
- });
- let rightNode = new cc.Node();
- rightNode.setContentSize(cc.winSize.width / 2, 2000);
- rightNode.setPosition(cc.winSize.width / 4, 0);
- this.node.addChild(rightNode);
- rightNode.on(cc.Node.EventType.TOUCH_START, () => {
- this.onKeyDown({ keyCode: cc.macro.KEY.d });
- });
- //add keyboard listener
- cc.systemEvent.on(cc.SystemEvent.EventType.KEY_DOWN, this.onKeyDown, this);
- }
- onDestroy() {
- //remove keyboard listener
- cc.systemEvent.off(cc.SystemEvent.EventType.KEY_DOWN, this.onKeyDown, this);
- }
- onKeyDown(event) {
- if (window.boy && window.boy.isValid && !window.gm.isGameOver) {
- switch (event.keyCode) {
- case cc.macro.KEY.a:
- window.boy.leftUp();
- break;
- case cc.macro.KEY.w:
- window.boy.up();
- break;
- case cc.macro.KEY.d:
- window.boy.rightUp();
- break;
- case cc.macro.KEY.j:
- window.boy.attack();
- break;
- case cc.macro.KEY.k:
- window.boy.autoAttack();
- break;
- case cc.macro.KEY.q:
- window.boy.forward(-1);
- break;
- case cc.macro.KEY.e:
- window.boy.forward(1);
- break;
- case cc.macro.KEY.r:
- window.boy.jump();
- break;
- case cc.macro.KEY.t:
- window.boy.cancelRun();
- break;
- //模拟:←为H0左手;→为H1右手;↑为F0左脚;↓为F1右脚;space为F2起跳
- //当H传过来时,改变人物转向;当F=0或1时,判定为走;当F=2时,判定为跳
- /////////////////////////////////
- case cc.macro.KEY.left:
- console.log("************");
- window.b_isLeft = true;
- window.boy.forward(-1);
- window.boy.cancelRun();
- break;
- case cc.macro.KEY.right:
- window.b_isLeft = false;
- window.boy.forward(1);
- window.boy.cancelRun();
- break;
- case cc.macro.KEY.up:
- window.boy.keepingRun = true;
- break;
- case cc.macro.KEY.down:
- window.boy.cancelRun();
- break;
- case cc.macro.KEY.space:
- if(window.b_isLeft){
- window.boy.leftUp();
- }else{
- window.boy.rightUp();
- }
- break;
- }
- }
- }
- //F:0:左 1:右 2:起跳 3:降落 -1: 无状态 T 0--无时间 -1:超时 H 0:左手 1:右手
- //人物状态:向左走;向右走;向左跳;向右跳
- //数据与动作之间的关系:当H传过来时,改变人物转向;当F=0或1时,判定为走;当F=2时,判定为跳
- onDeviceUpdateData(data) {
- console.log("来自游戏内----onDeviceUpdateData",data);
- if (data.H == 0) {
- console.log("改变人物转向:超左");
- window.b_isLeft = true;
- window.boy.forward(-1);
- window.boy.cancelRun();
- } else if (data.H == 1) {
- console.log("改变人物转向:超右");
- window.b_isLeft = false;
- window.boy.forward(1);
- window.boy.cancelRun();
- }
- if(data.F == 0){
- console.log("走步");
- window.boy.keepingRun = true;
- }else if(data.F == 1){
- console.log("走1步结束");
- window.boy.cancelRun();
- }
- if (data.F == 2) {
- console.log("起跳");
- if(window.b_isLeft){
- console.log("左上跳");
- window.boy.leftUp();
- }else{
- console.log("右上跳");
- window.boy.rightUp();
- }
- }
- }
- }
|