const {ccclass, property} = cc._decorator; @ccclass export default class KeyBoard extends cc.Component { onLoad(){ let buttons = [this.node.getChildByName('Left'),this.node.getChildByName('Right'),this.node.getChildByName('Jump')]; let keyCodes = [cc.macro.KEY.a,cc.macro.KEY.d,cc.macro.KEY.w]; buttons.forEach((elem:cc.Node,index:number)=>{ elem.on(cc.Node.EventType.TOUCH_START,()=>{ let event:any = {keyCode:keyCodes[index]}; this.onKeyDown(event); }); elem.on(cc.Node.EventType.TOUCH_END,()=>{ let event:any = {keyCode:keyCodes[index]}; this.onKeyUp(event); }); elem.on(cc.Node.EventType.TOUCH_CANCEL,()=>{ let event:any = {keyCode:keyCodes[index]}; this.onKeyUp(event); }); }) if(cc.sys.isBrowser){ cc.systemEvent.on(cc.SystemEvent.EventType.KEY_DOWN, this.onKeyDown, this); cc.systemEvent.on(cc.SystemEvent.EventType.KEY_UP, this.onKeyUp, this); } window.jsfunction = function(data){ console.log("data",data); //F:0:左 1:右 2:起跳 3:降落 -1: 无状态 T 0--无时间 -1:超时 // H 0:左手 1:右手 if(data.F=="3"){ window.playerRole.up = true; }else if(data.F=="2"||data.F=="-1"){ window.playerRole.up = false; } if(data.H=="0"){ window.playerRole.left = true; }else if(data.H=="1"){ window.playerRole.right = true; } } } onDestroy(){ if(cc.sys.isBrowser){ cc.systemEvent.off(cc.SystemEvent.EventType.KEY_DOWN, this.onKeyDown, this); cc.systemEvent.off(cc.SystemEvent.EventType.KEY_UP, this.onKeyUp, this); } } onKeyDown(event:cc.Event.EventKeyboard){ switch(event.keyCode){ case cc.macro.KEY.a: window.playerRole.left = true; break; case cc.macro.KEY.d: window.playerRole.right = true; break; case cc.macro.KEY.w: window.playerRole.up = true; break; } } onKeyUp(event:cc.Event.EventKeyboard){ switch(event.keyCode) { case cc.macro.KEY.a: window.playerRole.left = false; break; case cc.macro.KEY.d: window.playerRole.right = false; break; case cc.macro.KEY.w: window.playerRole.up = false; break; } } }