11<script setup>
2- import { inject , onMounted } from ' vue' ;
2+ import { inject , onBeforeUnmount , onMounted } from ' vue' ;
33
44import Joystick from ' @/components/Joystick.vue' ;
55
@@ -10,28 +10,38 @@ const Key = { 87: 'w', 65: 'a', 83: 's', 68: 'd', 16: 'shift' };
1010const KEYS = Object .keys (Key).map (key => + key);
1111
1212
13+ const _onKeyDown = e => {
14+ if (store .input .hasKey )
15+ e .preventDefault ();
16+
17+ if (e .altKey || e .ctrlKey || e .metaKey ) return ;
18+ if (! KEYS .includes (e .keyCode )) return ;
19+
20+ store .input .key [Key[e .keyCode ]] = true ;
21+ };
22+ const _onKeyUp = e => {
23+ if (store .input .hasKey )
24+ e .preventDefault ();
25+
26+ if (! KEYS .includes (e .keyCode )) return ;
27+
28+ store .input .key [Key[e .keyCode ]] = false ;
29+ };
30+ const _onBeforeUnload = e => {
31+ if (store .input .hasKey )
32+ e .preventDefault ();
33+ };
34+
35+
1336onMounted (() => {
14- window .addEventListener (' keydown' , e => {
15- if (store .input .hasKey )
16- e .preventDefault ();
17-
18- if (e .altKey || e .ctrlKey || e .metaKey ) return ;
19- if (! KEYS .includes (e .keyCode )) return ;
20-
21- store .input .key [Key[e .keyCode ]] = true ;
22- }, false );
23- window .addEventListener (' keyup' , e => {
24- if (store .input .hasKey )
25- e .preventDefault ();
26-
27- if (! KEYS .includes (e .keyCode )) return ;
28-
29- store .input .key [Key[e .keyCode ]] = false ;
30- }, false );
31- window .addEventListener (' beforeunload' , e => {
32- if (store .input .hasKey )
33- e .preventDefault ();
34- });
37+ window .addEventListener (' keydown' , _onKeyDown, false );
38+ window .addEventListener (' keyup' , _onKeyUp, false );
39+ window .addEventListener (' beforeunload' , _onBeforeUnload);
40+ });
41+ onBeforeUnmount (() => {
42+ window .removeEventListener (' keydown' , _onKeyDown, false );
43+ window .removeEventListener (' keyup' , _onKeyUp, false );
44+ window .removeEventListener (' beforeunload' , _onBeforeUnload);
3545});
3646 </script >
3747
0 commit comments