我这里是需要把值通过websocket传送到服务端,所以把方法写在websocket里面了。
不需要websocket的可以直接看里面代码
第一次写,可根据需要更改,有不同见解可留言,相互学习。
websocket.onopen = function () {
console.log(“webSocket connect success”);
var up = 0;//上
var left=0;//左
var right=0;//右
var down=0;//下
var space=0;//手刹
var stop=0;//刹车
var timeupleft;//上左函数
var timeupright;//上右函数
var timedownleft;//下左函数
var timedownright;//下右函数
var timeup;//上函数
var timedown;//下函数
var timeright;//右函数
var timeleft;//左函数
var timespace;
var timestop;
document.onkeydown = function (e) {
/*key_pressed[e.keyCode] = true;*/
/*判断如果按上执行下面方法*/
if (e.keyCode == 87) {
//如果按键上位true,则执行空,否则执行一次循环函数
if (key_pressed[87]==true){
} else if (key_pressed[83]!=true&&key_pressed[32]!=true&&key_pressed[90]!=true) {
timeup= window.setInterval(f, 100);
key_pressed[e.keyCode]=true;
}
}
/*判断如果按左执行下面方法*/
if (e.keyCode == 65) {
//left
if (key_pressed[65]==true){
} else if (key_pressed[68]!=true&&key_pressed[32]!=true&&key_pressed[90]!=true){
timeleft= window.setInterval(f1, 100);
key_pressed[e.keyCode]=true;
}
}
/*判断如果按右执行下面方法*/
if (e.keyCode==68){
//right
if (key_pressed[68]==true){
} else if (key_pressed[65]!=true&&key_pressed[32]!=true&&key_pressed[90]!=true){
timeright= window.setInterval(f2, 100);
key_pressed[e.keyCode]=true;
}
}
/*判断如果按下执行下面方法*/
if (e.keyCode==83){
//down
if (key_pressed[83]==true){
} else if (key_pressed[87]!=true&&key_pressed[32]!=true&&key_pressed[90]!=true){
timedown= window.setInterval(f3, 100);
key_pressed[e.keyCode]=true;
}
}
/*判断如果按空格执行下面方法*/
if (e.keyCode==32){
if (key_pressed[32]==true){
} else {
timespace=window.setInterval(f6,100);
key_pressed[e.keyCode]=true;
}
clearInterval(timeup);
clearInterval(timeleft);
clearInterval(timeright);
clearInterval(timedown);
clearInterval(timeupleft);
clearInterval(timeupright);
clearInterval(timedownleft);
clearInterval(timedownright);
}
/*判断如果按z执行下面方法*/
if (e.keyCode==90){
if (key_pressed[90]==true){
} else {
timestop=window.setInterval(f7,100);
key_pressed[e.keyCode]=true;
}
/*停止循环函数*/
clearInterval(timeup);
clearInterval(timeleft);
clearInterval(timeright);
clearInterval(timedown);
clearInterval(timeupleft);
clearInterval(timeupright);
clearInterval(timedownleft);
clearInterval(timedownright);
}
}
/*按键松开后执行的方法*/
document.onkeyup = function (e) {
key_pressed[e.keyCode] = false;
/*判断如果上键松开执行下面*/
if (e.keyCode==87){//前进----------------------------------------------
up=0;
websocket.send(session_admin+"-"+"\""+"space"+"\":"+space+",\""+"up"+"\":"+up+",\""+"left"+"\":"+left+",\""+"right"+"\":"+right+",\""+"stop"+"\":"+stop+",\""+"down:"+"\":"+down);
clearInterval(timeupleft);
clearInterval(timeupright);
clearInterval(timeup);
}
/*判断如果左键松开执行下面*/
if (e.keyCode==65){//左转-------------------------
left=0;
websocket.send(session_admin+"-"+"\""+"space"+"\":"+space+",\""+"up"+"\":"+up+",\""+"left"+"\":"+left+",\""+"right"+"\":"+right+",\""+"stop"+"\":"+stop+",\""+"down:"+"\":"+down);
if ((key_pressed[65]==false||typeof(key_pressed[65])=="undefined")&& key_pressed[87]==true &&( key_pressed[68]==false||typeof (key_pressed[68])=="undefined") && (key_pressed[83]==false||typeof (key_pressed[83])=="undefined")&&(key_pressed[32]==0||typeof (key_pressed[32])=="undefined")&&(key_pressed[90]==0||typeof (key_pressed[90])=="undefined")){
timeupleft= window.setInterval(f4, 100);
}
if ((key_pressed[65]==false||typeof(key_pressed[65])=="undefined")&& key_pressed[83]==true &&( key_pressed[68]==false||typeof (key_pressed[68])=="undefined" )&& (key_pressed[87]==false||typeof (key_pressed[87])=="undefined")&&(key_pressed[32]==0||typeof (key_pressed[32])=="undefined")&&(key_pressed[90]==0||typeof (key_pressed[90])=="undefined")){
timedownleft= window.setInterval(f5, 100);
}
clearInterval(timeleft);
}
if (e.keyCode==68){//右转--------------------------
right=0;
websocket.send(session_admin+"-"+"\""+"space"+"\":"+space+",\""+"up"+"\":"+up+",\""+"left"+"\":"+left+",\""+"right"+"\":"+right+",\""+"stop"+"\":"+stop+",\""+"down:"+"\":"+down);
if ((key_pressed[65]==false||typeof(key_pressed[65])=="undefined")&& key_pressed[87]==true &&( key_pressed[68]==false||typeof (key_pressed[68])=="undefined") && (key_pressed[83]==false||typeof (key_pressed[83])=="undefined")&&(key_pressed[32]==0||typeof (key_pressed[32])=="undefined")&&(key_pressed[90]==0||typeof (key_pressed[90])=="undefined")) {
timedownright= window.setInterval(f4, 100);
}
if ((key_pressed[65]==false||typeof(key_pressed[65])=="undefined")&& key_pressed[83]==true &&( key_pressed[68]==false||typeof (key_pressed[68])=="undefined" )&& (key_pressed[87]==false||typeof (key_pressed[87])=="undefined")&&(key_pressed[32]==0||typeof (key_pressed[32])=="undefined")&&(key_pressed[90]==0||typeof (key_pressed[90])=="undefined")){
timedownleft= window.setInterval(f5, 100);
}
clearInterval(timeright);
}
if (e.keyCode==83){//后退----------------------
down=0;
websocket.send(session_admin+"-"+"\""+"space"+"\":"+space+",\""+"up"+"\":"+up+",\""+"left"+"\":"+left+",\""+"right"+"\":"+right+",\""+"stop"+"\":"+stop+",\""+"down:"+"\":"+down);
clearInterval(timedownright);
clearInterval(timedownleft);
clearInterval(timedown);
}
if (e.keyCode==32){//手刹---------------------------------
space=0;
clearInterval(timespace);
websocket.send(session_admin+"-"+"\""+"space"+"\":"+space+",\""+"up"+"\":"+up+",\""+"left"+"\":"+left+",\""+"right"+"\":"+right+",\""+"stop"+"\":"+stop+",\""+"down:"+"\":"+down);
}
if (e.keyCode==90){
stop=0;
websocket.send(session_admin+"-"+"\""+"space"+"\":"+space+",\""+"up"+"\":"+up+",\""+"left"+"\":"+left+",\""+"right"+"\":"+right+",\""+"stop"+"\":"+stop+",\""+"down:"+"\":"+down);
clearInterval(timestop);
}
}
var f= function() {
/*设置前进最大值为100*/
if (up==100){
up=100
}else{
up+=2;
}
/*判断如果左键同时按下,执行下面方法*/
if (key_pressed[65]==true){
/*设置左键最大值*/
if (left==100){
left=100
}else{
left+=2;
}
/*判断如果右键同时按下,执行下面方法*/
}else if (key_pressed[65]==true){
/*设置右转最大值*/
if (right==100){
right=100;
} else{
right+=2;
}
}
websocket.send(session_admin+"-"+"\""+"space"+"\":"+space+",\""+"up"+"\":"+up+",\""+"left"+"\":"+left+",\""+"right"+"\":"+right+",\""+"stop"+"\":"+stop+",\""+"down:"+"\":"+down);
}
var f1= function () {
if (left==100){
left=100;
}else{
left+=2;
}
if (key_pressed[87]==true){
if (up==100){
up=100;
}else{
up+=2;
}
}else if (key_pressed[83]==true){
if (down==100){
down=100;
} else{
down+=2;
}
}
websocket.send(session_admin+"-"+"\""+"space"+"\":"+space+",\""+"up"+"\":"+up+",\""+"left"+"\":"+left+",\""+"right"+"\":"+right+",\""+"stop"+"\":"+stop+",\""+"down:"+"\":"+down);
}
var f2= function () {
if (right==100){
right=100;
}else{
right+=2;
}
if (key_pressed[87]==true){
if (up==100){
up=100;
}else{
up+=2;
}
}else if (key_pressed[83]==true){
if (down==100){
down=100;
} else{
down+=2;
}
}
websocket.send(session_admin+"-"+"\""+"space"+"\":"+space+",\""+"up"+"\":"+up+",\""+"left"+"\":"+left+",\""+"right"+"\":"+right+",\""+"stop"+"\":"+stop+",\""+"down:"+"\":"+down);
}
var f3= function () {
if (down==100){
down=100
}else{
down+=2;
}
if (key_pressed[65]==true){
if (left==100){
left=100;
}else{
left+=2;
}
}else if (key_pressed[68]==true){
if (right==100){
right=100;
} else{
right+=2;
}
}
websocket.send(session_admin+"-"+"\""+"space"+"\":"+space+",\""+"up"+"\":"+up+",\""+"left"+"\":"+left+",\""+"right"+"\":"+right+",\""+"stop"+"\":"+stop+",\""+"down:"+"\":"+down);
}
/*解决up自动增长发送消息问题*/
var f4= function(){
if (up==0){
return;
} else {
if (up==100){
up=100;
} else{
up+=2
}
websocket.send(session_admin+"-"+"\""+"space"+"\":"+space+",\""+"up"+"\":"+up+",\""+"left"+"\":"+left+",\""+"right"+"\":"+right+",\""+"stop"+"\":"+stop+",\""+"down:"+"\":"+down);
}
return ;
}
var f5= function(){
if (down==0){
return;
} else {
if (down==100){
down=100;
} else{
down+=2
}
websocket.send(session_admin+"-"+"\""+"space"+"\":"+space+",\""+"up"+"\":"+up+",\""+"left"+"\":"+left+",\""+"right"+"\":"+right+",\""+"stop"+"\":"+stop+",\""+"down:"+"\":"+down);
}
return ;
}
var f6=function(){
space=1;
websocket.send(session_admin+"-"+"\""+"space"+"\":"+space+",\""+"up"+"\":"+0+",\""+"left"+"\":"+0+",\""+"right"+"\":"+0+",\""+"stop"+"\":"+0+",\""+"down:"+"\":"+0);//手刹
/*停止循环函数*/
key_pressed[87]=false;
key_pressed[65]=false;
key_pressed[68]=false;
key_pressed[83]=false;
}
var f7=function(){
stop=1;
websocket.send(session_admin+"-"+"\""+"space"+"\":"+0+",\""+"up"+"\":"+0+",\""+"left"+"\":"+0+",\""+"right"+"\":"+0+",\""+"stop"+"\":"+stop+",\""+"down:"+"\":"+0);//刹车
key_pressed[87]=false;
key_pressed[65]=false;
key_pressed[68]=false;
key_pressed[83]=false;
}
};
下面是按键映射的值:
keyCode 8 = BackSpace BackSpace
keyCode 9 = Tab Tab
keyCode 12 = Clear
keyCode 13 = Enter
keyCode 16 = Shift_L
keyCode 17 = Control_L
keyCode 18 = Alt_L
keyCode 19 = Pause
keyCode 20 = Caps_Lock
keyCode 27 = Escape Escape
keyCode 32 = space
keyCode 33 = Prior
keyCode 34 = Next
keyCode 35 = End
keyCode 36 = Home
keyCode 37 = Left
keyCode 38 = Up
keyCode 39 = Right
keyCode 40 = Down
keyCode 41 = Select
keyCode 42 = Print
keyCode 43 = Execute
keyCode 45 = Insert
keyCode 46 = Delete
keyCode 47 = Help
keyCode 48 = 0 equal braceright
keyCode 49 = 1 exclam onesuperior
keyCode 50 = 2 quotedbl twosuperior
keyCode 51 = 3 section threesuperior
keyCode 52 = 4 dollar
keyCode 53 = 5 percent
keyCode 54 = 6 ampersand
keyCode 55 = 7 slash braceleft
keyCode 56 = 8 parenleft bracketleft
keyCode 57 = 9 parenright bracketright
keyCode 65 = a A
keyCode 66 = b B
keyCode 67 = c C
keyCode 68 = d D
keyCode 69 = e E EuroSign
keyCode 70 = f F
keyCode 71 = g G
keyCode 72 = h H
keyCode 73 = i I
keyCode 74 = j J
keyCode 75 = k K
keyCode 76 = l L
keyCode 77 = m M mu
keyCode 78 = n N
keyCode 79 = o O
keyCode 80 = p P
keyCode 81 = q Q at
keyCode 82 = r R
keyCode 83 = s S
keyCode 84 = t T
keyCode 85 = u U
keyCode 86 = v V
keyCode 87 = w W
keyCode 88 = x X
keyCode 89 = y Y
keyCode 90 = z Z
keyCode 96 = KP_0 KP_0
keyCode 97 = KP_1 KP_1
keyCode 98 = KP_2 KP_2
keyCode 99 = KP_3 KP_3
keyCode 100 = KP_4 KP_4
keyCode 101 = KP_5 KP_5
keyCode 102 = KP_6 KP_6
keyCode 103 = KP_7 KP_7
keyCode 104 = KP_8 KP_8
keyCode 105 = KP_9 KP_9
keyCode 106 = KP_Multiply KP_Multiply
keyCode 107 = KP_Add KP_Add
keyCode 108 = KP_Separator KP_Separator
keyCode 109 = KP_Subtract KP_Subtract
keyCode 110 = KP_Decimal KP_Decimal
keyCode 111 = KP_Divide KP_Divide
keyCode 112 = F1
keyCode 113 = F2
keyCode 114 = F3
keyCode 115 = F4
keyCode 116 = F5
keyCode 117 = F6
keyCode 118 = F7
keyCode 119 = F8
keyCode 120 = F9
keyCode 121 = F10
keyCode 122 = F11
keyCode 123 = F12
keyCode 124 = F13
keyCode 125 = F14
keyCode 126 = F15
keyCode 127 = F16
keyCode 128 = F17
keyCode 129 = F18
keyCode 130 = F19
keyCode 131 = F20
keyCode 132 = F21
keyCode 133 = F22
keyCode 134 = F23
keyCode 135 = F24
keyCode 136 = Num_Lock
keyCode 137 = Scroll_Lock
keyCode 187 = acute grave
keyCode 188 = comma semicolon
keyCode 189 = minus underscore
keyCode 190 = period colon
keyCode 192 = numbersign apostrophe
keyCode 210 = plusminus hyphen macron
keyCode 211 =
keyCode 212 = copyright registered
keyCode 213 = guillemotleft guillemotright
keyCode 214 = masculine ordfeminine
keyCode 215 = ae AE
keyCode 216 = cent yen
keyCode 217 = questiondown exclamdown
keyCode 218 = onequarter onehalf threequarters
keyCode 220 = less greater bar
keyCode 221 = plus asterisk asciitilde
keyCode 227 = multiply division
keyCode 228 = acircumflex Acircumflex
keyCode 229 = ecircumflex Ecircumflex
keyCode 230 = icircumflex Icircumflex
keyCode 231 = ocircumflex Ocircumflex
keyCode 232 = ucircumflex Ucircumflex
keyCode 233 = ntilde Ntilde
keyCode 234 = yacute Yacute
keyCode 235 = oslash Ooblique
keyCode 236 = aring Aring
keyCode 237 = ccedilla Ccedilla
keyCode 238 = thorn THORN
keyCode 239 = eth ETH
keyCode 240 = diaeresis cedilla currency
keyCode 241 = agrave Agrave atilde Atilde
keyCode 242 = egrave Egrave
keyCode 243 = igrave Igrave
keyCode 244 = ograve Ograve otilde Otilde
keyCode 245 = ugrave Ugrave
keyCode 246 = adiaeresis Adiaeresis
keyCode 247 = ediaeresis Ediaeresis
keyCode 248 = idiaeresis Idiaeresis
keyCode 249 = odiaeresis Odiaeresis
keyCode 250 = udiaeresis Udiaeresis
keyCode 251 = ssharp question backslash
keyCode 252 = asciicircum degree
keyCode 253 = 3 sterling
keyCode 254 = Mode_switch
A 0X65 U 0X85
B 0X66 V 0X86
C 0X67 W 0X87
D 0X68 X 0X88
E 0X69 Y 0X89
F 0X70 Z 0X90
G 0X71 0 0X48
H 0X72 1 0X49
I 0X73 2 0X50
J 0X74 3 0X51
K 0X75 4 0X52
L 0X76 5 0X53
M 0X77 6 0X54
N 0X78 7 0X55
O 0X79 8 0X56
P 0X80 9 0X57
Q 0X81 ESC 0X1B
R 0X82 CTRL 0X11
S 0X83 SHIFT 0X10
T 0X84 ENTER 0XD