melonjs 14.0.2 → 14.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/melonjs.mjs/_virtual/_commonjsHelpers.js +10 -0
- package/dist/melonjs.mjs/_virtual/arraymultimap.js +10 -0
- package/dist/melonjs.mjs/_virtual/earcut.js +10 -0
- package/dist/melonjs.mjs/_virtual/howler.js +10 -0
- package/dist/melonjs.mjs/_virtual/index.js +10 -0
- package/dist/melonjs.mjs/_virtual/index2.js +10 -0
- package/dist/melonjs.mjs/_virtual/multimap.js +10 -0
- package/dist/melonjs.mjs/_virtual/setmultimap.js +10 -0
- package/dist/melonjs.mjs/application/application.js +240 -0
- package/dist/melonjs.mjs/audio/audio.js +536 -0
- package/dist/melonjs.mjs/camera/camera2d.js +732 -0
- package/dist/melonjs.mjs/entity/entity.js +248 -0
- package/dist/melonjs.mjs/game.js +29 -0
- package/dist/melonjs.mjs/geometries/ellipse.js +275 -0
- package/dist/melonjs.mjs/geometries/line.js +116 -0
- package/dist/melonjs.mjs/geometries/path2d.js +319 -0
- package/dist/melonjs.mjs/geometries/point.js +89 -0
- package/dist/melonjs.mjs/geometries/poly.js +500 -0
- package/dist/melonjs.mjs/geometries/rectangle.js +375 -0
- package/dist/melonjs.mjs/geometries/roundrect.js +168 -0
- package/dist/melonjs.mjs/index.js +248 -0
- package/dist/melonjs.mjs/input/gamepad.js +501 -0
- package/dist/melonjs.mjs/input/input.js +26 -0
- package/dist/melonjs.mjs/input/keyboard.js +470 -0
- package/dist/melonjs.mjs/input/pointer.js +393 -0
- package/dist/melonjs.mjs/input/pointerevent.js +818 -0
- package/dist/melonjs.mjs/lang/deprecated.js +157 -0
- package/dist/melonjs.mjs/level/level.js +297 -0
- package/dist/melonjs.mjs/level/tiled/TMXGroup.js +141 -0
- package/dist/melonjs.mjs/level/tiled/TMXLayer.js +448 -0
- package/dist/melonjs.mjs/level/tiled/TMXObject.js +355 -0
- package/dist/melonjs.mjs/level/tiled/TMXTile.js +194 -0
- package/dist/melonjs.mjs/level/tiled/TMXTileMap.js +639 -0
- package/dist/melonjs.mjs/level/tiled/TMXTileset.js +311 -0
- package/dist/melonjs.mjs/level/tiled/TMXTilesetGroup.js +83 -0
- package/dist/melonjs.mjs/level/tiled/TMXUtils.js +367 -0
- package/dist/melonjs.mjs/level/tiled/renderer/TMXHexagonalRenderer.js +506 -0
- package/dist/melonjs.mjs/level/tiled/renderer/TMXIsometricRenderer.js +220 -0
- package/dist/melonjs.mjs/level/tiled/renderer/TMXOrthogonalRenderer.js +157 -0
- package/dist/melonjs.mjs/level/tiled/renderer/TMXRenderer.js +125 -0
- package/dist/melonjs.mjs/level/tiled/renderer/TMXStaggeredRenderer.js +109 -0
- package/dist/melonjs.mjs/loader/loader.js +801 -0
- package/dist/melonjs.mjs/loader/loadingscreen.js +120 -0
- package/dist/melonjs.mjs/loader/melonjs_logo.png.js +11 -0
- package/dist/melonjs.mjs/math/color.js +618 -0
- package/dist/melonjs.mjs/math/math.js +218 -0
- package/dist/melonjs.mjs/math/matrix2.js +503 -0
- package/dist/melonjs.mjs/math/matrix3.js +681 -0
- package/dist/melonjs.mjs/math/observable_vector2.js +471 -0
- package/dist/melonjs.mjs/math/observable_vector3.js +561 -0
- package/dist/melonjs.mjs/math/vector2.js +528 -0
- package/dist/melonjs.mjs/math/vector3.js +569 -0
- package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/arraymultimap.js +73 -0
- package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/index.js +21 -0
- package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/multimap.js +324 -0
- package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/setmultimap.js +69 -0
- package/dist/melonjs.mjs/node_modules/earcut/src/earcut.js +691 -0
- package/dist/melonjs.mjs/node_modules/eventemitter3/index.js +350 -0
- package/dist/melonjs.mjs/node_modules/howler/dist/howler.js +3241 -0
- package/dist/melonjs.mjs/particles/emitter.js +267 -0
- package/dist/melonjs.mjs/particles/particle.js +188 -0
- package/dist/melonjs.mjs/particles/settings.js +319 -0
- package/dist/melonjs.mjs/physics/body.js +704 -0
- package/dist/melonjs.mjs/physics/bounds.js +460 -0
- package/dist/melonjs.mjs/physics/collision.js +132 -0
- package/dist/melonjs.mjs/physics/detector.js +194 -0
- package/dist/melonjs.mjs/physics/quadtree.js +391 -0
- package/dist/melonjs.mjs/physics/response.js +57 -0
- package/dist/melonjs.mjs/physics/sat.js +483 -0
- package/dist/melonjs.mjs/physics/world.js +221 -0
- package/dist/melonjs.mjs/plugin/plugin.js +141 -0
- package/dist/melonjs.mjs/renderable/collectable.js +62 -0
- package/dist/melonjs.mjs/renderable/colorlayer.js +80 -0
- package/dist/melonjs.mjs/renderable/container.js +1018 -0
- package/dist/melonjs.mjs/renderable/dragndrop.js +224 -0
- package/dist/melonjs.mjs/renderable/imagelayer.js +306 -0
- package/dist/melonjs.mjs/renderable/light2d.js +156 -0
- package/dist/melonjs.mjs/renderable/nineslicesprite.js +247 -0
- package/dist/melonjs.mjs/renderable/renderable.js +783 -0
- package/dist/melonjs.mjs/renderable/sprite.js +654 -0
- package/dist/melonjs.mjs/renderable/trigger.js +157 -0
- package/dist/melonjs.mjs/renderable/ui/uibaseelement.js +213 -0
- package/dist/melonjs.mjs/renderable/ui/uispriteelement.js +226 -0
- package/dist/melonjs.mjs/renderable/ui/uitextbutton.js +128 -0
- package/dist/melonjs.mjs/state/stage.js +237 -0
- package/dist/melonjs.mjs/state/state.js +596 -0
- package/dist/melonjs.mjs/system/device.js +909 -0
- package/dist/melonjs.mjs/system/dom.js +78 -0
- package/dist/melonjs.mjs/system/event.js +537 -0
- package/dist/melonjs.mjs/system/platform.js +41 -0
- package/dist/melonjs.mjs/system/pooling.js +209 -0
- package/dist/melonjs.mjs/system/save.js +157 -0
- package/dist/melonjs.mjs/system/timer.js +286 -0
- package/dist/melonjs.mjs/text/bitmaptext.js +364 -0
- package/dist/melonjs.mjs/text/bitmaptextdata.js +199 -0
- package/dist/melonjs.mjs/text/glyph.js +66 -0
- package/dist/melonjs.mjs/text/text.js +453 -0
- package/dist/melonjs.mjs/text/textmetrics.js +176 -0
- package/dist/melonjs.mjs/text/textstyle.js +23 -0
- package/dist/melonjs.mjs/tweens/easing.js +336 -0
- package/dist/melonjs.mjs/tweens/interpolation.js +112 -0
- package/dist/melonjs.mjs/tweens/tween.js +480 -0
- package/dist/melonjs.mjs/utils/agent.js +76 -0
- package/dist/melonjs.mjs/utils/array.js +63 -0
- package/dist/melonjs.mjs/utils/file.js +42 -0
- package/dist/melonjs.mjs/utils/function.js +70 -0
- package/dist/melonjs.mjs/utils/string.js +82 -0
- package/dist/melonjs.mjs/utils/utils.js +173 -0
- package/dist/melonjs.mjs/video/canvas/canvas_renderer.js +807 -0
- package/dist/melonjs.mjs/video/renderer.js +411 -0
- package/dist/melonjs.mjs/video/texture/atlas.js +519 -0
- package/dist/melonjs.mjs/video/texture/cache.js +143 -0
- package/dist/melonjs.mjs/video/texture/canvas_texture.js +144 -0
- package/dist/melonjs.mjs/video/video.js +462 -0
- package/dist/melonjs.mjs/video/webgl/buffer/vertex.js +143 -0
- package/dist/melonjs.mjs/video/webgl/glshader.js +168 -0
- package/dist/melonjs.mjs/video/webgl/shaders/primitive.frag.js +10 -0
- package/dist/melonjs.mjs/video/webgl/shaders/primitive.vert.js +10 -0
- package/dist/melonjs.mjs/video/webgl/shaders/quad.frag.js +10 -0
- package/dist/melonjs.mjs/video/webgl/shaders/quad.vert.js +10 -0
- package/dist/melonjs.mjs/video/webgl/utils/attributes.js +25 -0
- package/dist/melonjs.mjs/video/webgl/utils/precision.js +20 -0
- package/dist/melonjs.mjs/video/webgl/utils/program.js +67 -0
- package/dist/melonjs.mjs/video/webgl/utils/string.js +25 -0
- package/dist/melonjs.mjs/video/webgl/utils/uniforms.js +92 -0
- package/dist/melonjs.mjs/video/webgl/webgl_compositor.js +495 -0
- package/dist/melonjs.mjs/video/webgl/webgl_renderer.js +1036 -0
- package/dist/melonjs.module.d.ts +1163 -1163
- package/dist/melonjs.module.js +1903 -3274
- package/package.json +22 -17
- package/src/application/application.js +3 -3
- package/src/audio/audio.js +32 -32
- package/src/camera/camera2d.js +31 -31
- package/src/entity/entity.js +17 -17
- package/src/geometries/ellipse.js +16 -16
- package/src/geometries/line.js +5 -5
- package/src/geometries/path2d.js +32 -32
- package/src/geometries/poly.js +15 -15
- package/src/geometries/rectangle.js +18 -18
- package/src/geometries/roundrect.js +8 -8
- package/src/input/gamepad.js +15 -15
- package/src/input/keyboard.js +12 -12
- package/src/input/pointer.js +6 -6
- package/src/input/pointerevent.js +12 -12
- package/src/lang/deprecated.js +12 -12
- package/src/level/level.js +25 -25
- package/src/level/tiled/TMXLayer.js +22 -22
- package/src/level/tiled/TMXTile.js +5 -5
- package/src/level/tiled/TMXTileMap.js +6 -6
- package/src/level/tiled/TMXTileset.js +2 -2
- package/src/level/tiled/TMXUtils.js +5 -5
- package/src/level/tiled/renderer/TMXHexagonalRenderer.js +2 -2
- package/src/level/tiled/renderer/TMXIsometricRenderer.js +2 -2
- package/src/level/tiled/renderer/TMXOrthogonalRenderer.js +1 -1
- package/src/level/tiled/renderer/TMXRenderer.js +19 -19
- package/src/loader/loader.js +20 -20
- package/src/math/color.js +20 -20
- package/src/math/math.js +16 -16
- package/src/math/matrix2.js +16 -16
- package/src/math/matrix3.js +25 -25
- package/src/math/observable_vector2.js +14 -14
- package/src/math/observable_vector3.js +16 -16
- package/src/math/vector2.js +9 -9
- package/src/math/vector3.js +10 -10
- package/src/particles/emitter.js +6 -6
- package/src/particles/particle.js +2 -2
- package/src/physics/body.js +28 -28
- package/src/physics/bounds.js +8 -8
- package/src/physics/collision.js +2 -2
- package/src/physics/detector.js +6 -6
- package/src/physics/quadtree.js +11 -11
- package/src/physics/sat.js +31 -31
- package/src/physics/world.js +5 -5
- package/src/plugin/plugin.js +5 -5
- package/src/renderable/collectable.js +3 -3
- package/src/renderable/colorlayer.js +5 -5
- package/src/renderable/container.js +21 -21
- package/src/renderable/dragndrop.js +14 -14
- package/src/renderable/imagelayer.js +13 -13
- package/src/renderable/light2d.js +3 -3
- package/src/renderable/nineslicesprite.js +16 -16
- package/src/renderable/renderable.js +23 -23
- package/src/renderable/sprite.js +28 -28
- package/src/renderable/trigger.js +15 -15
- package/src/renderable/ui/uibaseelement.js +7 -7
- package/src/renderable/ui/uispriteelement.js +6 -6
- package/src/renderable/ui/uitextbutton.js +13 -13
- package/src/state/stage.js +7 -7
- package/src/state/state.js +17 -17
- package/src/system/device.js +11 -11
- package/src/system/event.js +10 -10
- package/src/system/pooling.js +9 -9
- package/src/system/save.js +2 -2
- package/src/system/timer.js +10 -10
- package/src/text/bitmaptext.js +18 -18
- package/src/text/bitmaptextdata.js +2 -2
- package/src/text/text.js +23 -23
- package/src/text/textmetrics.js +8 -8
- package/src/tweens/tween.js +19 -19
- package/src/utils/agent.js +5 -5
- package/src/utils/array.js +4 -4
- package/src/utils/file.js +2 -2
- package/src/utils/function.js +6 -6
- package/src/utils/string.js +5 -5
- package/src/utils/utils.js +4 -4
- package/src/video/canvas/canvas_renderer.js +70 -70
- package/src/video/renderer.js +26 -26
- package/src/video/texture/atlas.js +22 -22
- package/src/video/texture/canvas_texture.js +9 -9
- package/src/video/video.js +17 -17
- package/src/video/webgl/glshader.js +10 -10
- package/src/video/webgl/webgl_compositor.js +41 -41
- package/src/video/webgl/webgl_renderer.js +75 -75
|
@@ -0,0 +1,470 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* melonJS Game Engine - v14.1.0
|
|
3
|
+
* http://www.melonjs.org
|
|
4
|
+
* melonjs is licensed under the MIT License.
|
|
5
|
+
* http://www.opensource.org/licenses/mit-license
|
|
6
|
+
* @copyright (C) 2011 - 2022 Olivier Biot (AltByte Pte Ltd)
|
|
7
|
+
*/
|
|
8
|
+
import { preventDefault } from './input.js';
|
|
9
|
+
import { emit, KEYDOWN, KEYUP } from '../system/event.js';
|
|
10
|
+
import { isMobile } from '../system/platform.js';
|
|
11
|
+
|
|
12
|
+
// corresponding actions
|
|
13
|
+
var _keyStatus = {};
|
|
14
|
+
|
|
15
|
+
// lock enable flag for keys
|
|
16
|
+
var _keyLock = {};
|
|
17
|
+
// actual lock status of each key
|
|
18
|
+
var _keyLocked = {};
|
|
19
|
+
|
|
20
|
+
// List of binded keys being held
|
|
21
|
+
var _keyRefs = {};
|
|
22
|
+
|
|
23
|
+
// whether default event should be prevented for a given keypress
|
|
24
|
+
var _preventDefaultForKeys = {};
|
|
25
|
+
|
|
26
|
+
// list of binded keys
|
|
27
|
+
var _keyBindings = {};
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* key down event
|
|
31
|
+
* @ignore
|
|
32
|
+
*/
|
|
33
|
+
var keyDownEvent = function (e, keyCode, mouseButton) {
|
|
34
|
+
|
|
35
|
+
keyCode = keyCode || e.keyCode || e.button;
|
|
36
|
+
var action = _keyBindings[keyCode];
|
|
37
|
+
|
|
38
|
+
// publish a message for keydown event
|
|
39
|
+
emit(KEYDOWN,
|
|
40
|
+
action,
|
|
41
|
+
keyCode,
|
|
42
|
+
action ? !_keyLocked[action] : true
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
if (action) {
|
|
46
|
+
if (!_keyLocked[action]) {
|
|
47
|
+
var trigger = (typeof mouseButton !== "undefined") ? mouseButton : keyCode;
|
|
48
|
+
if (!_keyRefs[action][trigger]) {
|
|
49
|
+
_keyStatus[action]++;
|
|
50
|
+
_keyRefs[action][trigger] = true;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
// prevent event propagation
|
|
54
|
+
if (_preventDefaultForKeys[keyCode] && (typeof e.preventDefault === "function")) {
|
|
55
|
+
// "fake" events generated through triggerKeyEvent do not have a preventDefault fn
|
|
56
|
+
return e.preventDefault();
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return true;
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* key up event
|
|
69
|
+
* @ignore
|
|
70
|
+
*/
|
|
71
|
+
var keyUpEvent = function (e, keyCode, mouseButton) {
|
|
72
|
+
keyCode = keyCode || e.keyCode || e.button;
|
|
73
|
+
var action = _keyBindings[keyCode];
|
|
74
|
+
|
|
75
|
+
// publish a message for keydown event
|
|
76
|
+
emit(KEYUP, action, keyCode);
|
|
77
|
+
|
|
78
|
+
if (action) {
|
|
79
|
+
var trigger = (typeof mouseButton !== "undefined") ? mouseButton : keyCode;
|
|
80
|
+
_keyRefs[action][trigger] = undefined;
|
|
81
|
+
|
|
82
|
+
if (_keyStatus[action] > 0) {
|
|
83
|
+
_keyStatus[action]--;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
_keyLocked[action] = false;
|
|
87
|
+
|
|
88
|
+
// prevent event propagation
|
|
89
|
+
if (_preventDefaultForKeys[keyCode] && (typeof e.preventDefault === "function")) {
|
|
90
|
+
// "fake" events generated through triggerKeyEvent do not have a preventDefault fn
|
|
91
|
+
return e.preventDefault();
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
return true;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
return true;
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
/*
|
|
102
|
+
* PUBLIC STUFF
|
|
103
|
+
*/
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* the default target element for keyboard events (usually the window element in which the game is running)
|
|
107
|
+
* @public
|
|
108
|
+
* @type {EventTarget}
|
|
109
|
+
* @name keyBoardEventTarget
|
|
110
|
+
* @memberof input
|
|
111
|
+
*/
|
|
112
|
+
var keyBoardEventTarget = null;
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* standard keyboard constants
|
|
116
|
+
* @public
|
|
117
|
+
* @enum {number}
|
|
118
|
+
* @namespace KEY
|
|
119
|
+
* @memberof input
|
|
120
|
+
*/
|
|
121
|
+
const KEY = {
|
|
122
|
+
"BACKSPACE" : 8,
|
|
123
|
+
/** @memberof input.KEY */
|
|
124
|
+
"TAB" : 9,
|
|
125
|
+
/** @memberof input.KEY */
|
|
126
|
+
"ENTER" : 13,
|
|
127
|
+
/** @memberof input.KEY */
|
|
128
|
+
"SHIFT" : 16,
|
|
129
|
+
/** @memberof input.KEY */
|
|
130
|
+
"CTRL" : 17,
|
|
131
|
+
/** @memberof input.KEY */
|
|
132
|
+
"ALT" : 18,
|
|
133
|
+
/** @memberof input.KEY */
|
|
134
|
+
"PAUSE" : 19,
|
|
135
|
+
/** @memberof input.KEY */
|
|
136
|
+
"CAPS_LOCK" : 20,
|
|
137
|
+
/** @memberof input.KEY */
|
|
138
|
+
"ESC" : 27,
|
|
139
|
+
/** @memberof input.KEY */
|
|
140
|
+
"SPACE" : 32,
|
|
141
|
+
/** @memberof input.KEY */
|
|
142
|
+
"PAGE_UP" : 33,
|
|
143
|
+
/** @memberof input.KEY */
|
|
144
|
+
"PAGE_DOWN" : 34,
|
|
145
|
+
/** @memberof input.KEY */
|
|
146
|
+
"END" : 35,
|
|
147
|
+
/** @memberof input.KEY */
|
|
148
|
+
"HOME" : 36,
|
|
149
|
+
/** @memberof input.KEY */
|
|
150
|
+
"LEFT" : 37,
|
|
151
|
+
/** @memberof input.KEY */
|
|
152
|
+
"UP" : 38,
|
|
153
|
+
/** @memberof input.KEY */
|
|
154
|
+
"RIGHT" : 39,
|
|
155
|
+
/** @memberof input.KEY */
|
|
156
|
+
"DOWN" : 40,
|
|
157
|
+
/** @memberof input.KEY */
|
|
158
|
+
"PRINT_SCREEN" : 42,
|
|
159
|
+
/** @memberof input.KEY */
|
|
160
|
+
"INSERT" : 45,
|
|
161
|
+
/** @memberof input.KEY */
|
|
162
|
+
"DELETE" : 46,
|
|
163
|
+
/** @memberof input.KEY */
|
|
164
|
+
"NUM0" : 48,
|
|
165
|
+
/** @memberof input.KEY */
|
|
166
|
+
"NUM1" : 49,
|
|
167
|
+
/** @memberof input.KEY */
|
|
168
|
+
"NUM2" : 50,
|
|
169
|
+
/** @memberof input.KEY */
|
|
170
|
+
"NUM3" : 51,
|
|
171
|
+
/** @memberof input.KEY */
|
|
172
|
+
"NUM4" : 52,
|
|
173
|
+
/** @memberof input.KEY */
|
|
174
|
+
"NUM5" : 53,
|
|
175
|
+
/** @memberof input.KEY */
|
|
176
|
+
"NUM6" : 54,
|
|
177
|
+
/** @memberof input.KEY */
|
|
178
|
+
"NUM7" : 55,
|
|
179
|
+
/** @memberof input.KEY */
|
|
180
|
+
"NUM8" : 56,
|
|
181
|
+
/** @memberof input.KEY */
|
|
182
|
+
"NUM9" : 57,
|
|
183
|
+
/** @memberof input.KEY */
|
|
184
|
+
"A" : 65,
|
|
185
|
+
/** @memberof input.KEY */
|
|
186
|
+
"B" : 66,
|
|
187
|
+
/** @memberof input.KEY */
|
|
188
|
+
"C" : 67,
|
|
189
|
+
/** @memberof input.KEY */
|
|
190
|
+
"D" : 68,
|
|
191
|
+
/** @memberof input.KEY */
|
|
192
|
+
"E" : 69,
|
|
193
|
+
/** @memberof input.KEY */
|
|
194
|
+
"F" : 70,
|
|
195
|
+
/** @memberof input.KEY */
|
|
196
|
+
"G" : 71,
|
|
197
|
+
/** @memberof input.KEY */
|
|
198
|
+
"H" : 72,
|
|
199
|
+
/** @memberof input.KEY */
|
|
200
|
+
"I" : 73,
|
|
201
|
+
/** @memberof input.KEY */
|
|
202
|
+
"J" : 74,
|
|
203
|
+
/** @memberof input.KEY */
|
|
204
|
+
"K" : 75,
|
|
205
|
+
/** @memberof input.KEY */
|
|
206
|
+
"L" : 76,
|
|
207
|
+
/** @memberof input.KEY */
|
|
208
|
+
"M" : 77,
|
|
209
|
+
/** @memberof input.KEY */
|
|
210
|
+
"N" : 78,
|
|
211
|
+
/** @memberof input.KEY */
|
|
212
|
+
"O" : 79,
|
|
213
|
+
/** @memberof input.KEY */
|
|
214
|
+
"P" : 80,
|
|
215
|
+
/** @memberof input.KEY */
|
|
216
|
+
"Q" : 81,
|
|
217
|
+
/** @memberof input.KEY */
|
|
218
|
+
"R" : 82,
|
|
219
|
+
/** @memberof input.KEY */
|
|
220
|
+
"S" : 83,
|
|
221
|
+
/** @memberof input.KEY */
|
|
222
|
+
"T" : 84,
|
|
223
|
+
/** @memberof input.KEY */
|
|
224
|
+
"U" : 85,
|
|
225
|
+
/** @memberof input.KEY */
|
|
226
|
+
"V" : 86,
|
|
227
|
+
/** @memberof input.KEY */
|
|
228
|
+
"W" : 87,
|
|
229
|
+
/** @memberof input.KEY */
|
|
230
|
+
"X" : 88,
|
|
231
|
+
/** @memberof input.KEY */
|
|
232
|
+
"Y" : 89,
|
|
233
|
+
/** @memberof input.KEY */
|
|
234
|
+
"Z" : 90,
|
|
235
|
+
/** @memberof input.KEY */
|
|
236
|
+
"WINDOW_KEY" : 91,
|
|
237
|
+
/** @memberof input.KEY */
|
|
238
|
+
"NUMPAD0" : 96,
|
|
239
|
+
/** @memberof input.KEY */
|
|
240
|
+
"NUMPAD1" : 97,
|
|
241
|
+
/** @memberof input.KEY */
|
|
242
|
+
"NUMPAD2" : 98,
|
|
243
|
+
/** @memberof input.KEY */
|
|
244
|
+
"NUMPAD3" : 99,
|
|
245
|
+
/** @memberof input.KEY */
|
|
246
|
+
"NUMPAD4" : 100,
|
|
247
|
+
/** @memberof input.KEY */
|
|
248
|
+
"NUMPAD5" : 101,
|
|
249
|
+
/** @memberof input.KEY */
|
|
250
|
+
"NUMPAD6" : 102,
|
|
251
|
+
/** @memberof input.KEY */
|
|
252
|
+
"NUMPAD7" : 103,
|
|
253
|
+
/** @memberof input.KEY */
|
|
254
|
+
"NUMPAD8" : 104,
|
|
255
|
+
/** @memberof input.KEY */
|
|
256
|
+
"NUMPAD9" : 105,
|
|
257
|
+
/** @memberof input.KEY */
|
|
258
|
+
"MULTIPLY" : 106,
|
|
259
|
+
/** @memberof input.KEY */
|
|
260
|
+
"ADD" : 107,
|
|
261
|
+
/** @memberof input.KEY */
|
|
262
|
+
"SUBSTRACT" : 109,
|
|
263
|
+
/** @memberof input.KEY */
|
|
264
|
+
"DECIMAL" : 110,
|
|
265
|
+
/** @memberof input.KEY */
|
|
266
|
+
"DIVIDE" : 111,
|
|
267
|
+
/** @memberof input.KEY */
|
|
268
|
+
"F1" : 112,
|
|
269
|
+
/** @memberof input.KEY */
|
|
270
|
+
"F2" : 113,
|
|
271
|
+
/** @memberof input.KEY */
|
|
272
|
+
"F3" : 114,
|
|
273
|
+
/** @memberof input.KEY */
|
|
274
|
+
"F4" : 115,
|
|
275
|
+
/** @memberof input.KEY */
|
|
276
|
+
"F5" : 116,
|
|
277
|
+
/** @memberof input.KEY */
|
|
278
|
+
"F6" : 117,
|
|
279
|
+
/** @memberof input.KEY */
|
|
280
|
+
"F7" : 118,
|
|
281
|
+
/** @memberof input.KEY */
|
|
282
|
+
"F8" : 119,
|
|
283
|
+
/** @memberof input.KEY */
|
|
284
|
+
"F9" : 120,
|
|
285
|
+
/** @memberof input.KEY */
|
|
286
|
+
"F10" : 121,
|
|
287
|
+
/** @memberof input.KEY */
|
|
288
|
+
"F11" : 122,
|
|
289
|
+
/** @memberof input.KEY */
|
|
290
|
+
"F12" : 123,
|
|
291
|
+
/** @memberof input.KEY */
|
|
292
|
+
"TILDE" : 126,
|
|
293
|
+
/** @memberof input.KEY */
|
|
294
|
+
"NUM_LOCK" : 144,
|
|
295
|
+
/** @memberof input.KEY */
|
|
296
|
+
"SCROLL_LOCK" : 145,
|
|
297
|
+
/** @memberof input.KEY */
|
|
298
|
+
"SEMICOLON" : 186,
|
|
299
|
+
/** @memberof input.KEY */
|
|
300
|
+
"PLUS" : 187,
|
|
301
|
+
/** @memberof input.KEY */
|
|
302
|
+
"COMMA" : 188,
|
|
303
|
+
/** @memberof input.KEY */
|
|
304
|
+
"MINUS" : 189,
|
|
305
|
+
/** @memberof input.KEY */
|
|
306
|
+
"PERIOD" : 190,
|
|
307
|
+
/** @memberof input.KEY */
|
|
308
|
+
"FORWAND_SLASH" : 191,
|
|
309
|
+
/** @memberof input.KEY */
|
|
310
|
+
"GRAVE_ACCENT" : 192,
|
|
311
|
+
/** @memberof input.KEY */
|
|
312
|
+
"OPEN_BRACKET" : 219,
|
|
313
|
+
/** @memberof input.KEY */
|
|
314
|
+
"BACK_SLASH" : 220,
|
|
315
|
+
/** @memberof input.KEY */
|
|
316
|
+
"CLOSE_BRACKET" : 221,
|
|
317
|
+
/** @memberof input.KEY */
|
|
318
|
+
"SINGLE_QUOTE" : 222
|
|
319
|
+
};
|
|
320
|
+
|
|
321
|
+
/**
|
|
322
|
+
* enable keyboard event
|
|
323
|
+
* @ignore
|
|
324
|
+
*/
|
|
325
|
+
function initKeyboardEvent() {
|
|
326
|
+
// make sure the keyboard is enable
|
|
327
|
+
if (keyBoardEventTarget === null && isMobile === false) {
|
|
328
|
+
keyBoardEventTarget = globalThis;
|
|
329
|
+
if (typeof keyBoardEventTarget.addEventListener === "function") {
|
|
330
|
+
keyBoardEventTarget.addEventListener("keydown", keyDownEvent, false);
|
|
331
|
+
keyBoardEventTarget.addEventListener("keyup", keyUpEvent, false);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
/**
|
|
337
|
+
* return the key press status of the specified action
|
|
338
|
+
* @name isKeyPressed
|
|
339
|
+
* @memberof input
|
|
340
|
+
* @public
|
|
341
|
+
* @param {string} action - user defined corresponding action
|
|
342
|
+
* @returns {boolean} true if pressed
|
|
343
|
+
* @example
|
|
344
|
+
* if (me.input.isKeyPressed('left')) {
|
|
345
|
+
* //do something
|
|
346
|
+
* }
|
|
347
|
+
* else if (me.input.isKeyPressed('right')) {
|
|
348
|
+
* //do something else...
|
|
349
|
+
* }
|
|
350
|
+
*/
|
|
351
|
+
function isKeyPressed(action) {
|
|
352
|
+
if (_keyStatus[action] && !_keyLocked[action]) {
|
|
353
|
+
if (_keyLock[action]) {
|
|
354
|
+
_keyLocked[action] = true;
|
|
355
|
+
}
|
|
356
|
+
return true;
|
|
357
|
+
}
|
|
358
|
+
return false;
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
/**
|
|
362
|
+
* return the key status of the specified action
|
|
363
|
+
* @name keyStatus
|
|
364
|
+
* @memberof input
|
|
365
|
+
* @public
|
|
366
|
+
* @param {string} action - user defined corresponding action
|
|
367
|
+
* @returns {boolean} down (true) or up(false)
|
|
368
|
+
*/
|
|
369
|
+
function keyStatus(action) {
|
|
370
|
+
return (_keyStatus[action] > 0);
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
|
|
374
|
+
/**
|
|
375
|
+
* trigger the specified key (simulated) event <br>
|
|
376
|
+
* @name triggerKeyEvent
|
|
377
|
+
* @memberof input
|
|
378
|
+
* @public
|
|
379
|
+
* @param {number} keycode - (See {@link input.KEY})
|
|
380
|
+
* @param {boolean} [status=false] - true to trigger a key down event, or false for key up event
|
|
381
|
+
* @param {number} [mouseButton] - the mouse button to trigger
|
|
382
|
+
* @example
|
|
383
|
+
* // trigger a key press
|
|
384
|
+
* me.input.triggerKeyEvent(me.input.KEY.LEFT, true);
|
|
385
|
+
*/
|
|
386
|
+
function triggerKeyEvent(keycode, status, mouseButton) {
|
|
387
|
+
if (status === true) {
|
|
388
|
+
keyDownEvent({}, keycode, mouseButton);
|
|
389
|
+
}
|
|
390
|
+
else {
|
|
391
|
+
keyUpEvent({}, keycode, mouseButton);
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
|
|
396
|
+
/**
|
|
397
|
+
* associate a user defined action to a keycode
|
|
398
|
+
* @name bindKey
|
|
399
|
+
* @memberof input
|
|
400
|
+
* @public
|
|
401
|
+
* @param {number} keycode - (See {@link input.KEY})
|
|
402
|
+
* @param {string} action - user defined corresponding action
|
|
403
|
+
* @param {boolean} [lock=false] - cancel the keypress event once read
|
|
404
|
+
* @param {boolean} [preventDefault=input.preventDefault] - prevent default browser action
|
|
405
|
+
* @example
|
|
406
|
+
* // enable the keyboard
|
|
407
|
+
* me.input.bindKey(me.input.KEY.LEFT, "left");
|
|
408
|
+
* me.input.bindKey(me.input.KEY.RIGHT, "right");
|
|
409
|
+
* me.input.bindKey(me.input.KEY.X, "jump", true);
|
|
410
|
+
* me.input.bindKey(me.input.KEY.F1, "options", true, true);
|
|
411
|
+
*/
|
|
412
|
+
function bindKey(keycode, action, lock, preventDefault$1 = preventDefault) {
|
|
413
|
+
_keyBindings[keycode] = action;
|
|
414
|
+
_preventDefaultForKeys[keycode] = preventDefault$1;
|
|
415
|
+
|
|
416
|
+
_keyStatus[action] = 0;
|
|
417
|
+
_keyLock[action] = lock ? lock : false;
|
|
418
|
+
_keyLocked[action] = false;
|
|
419
|
+
_keyRefs[action] = {};
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
/**
|
|
423
|
+
* return the action associated with the given keycode
|
|
424
|
+
* @name getBindingKey
|
|
425
|
+
* @memberof input
|
|
426
|
+
* @public
|
|
427
|
+
* @param {number} keycode - (See {@link input.KEY})
|
|
428
|
+
* @returns {string} user defined associated action
|
|
429
|
+
*/
|
|
430
|
+
function getBindingKey(keycode) {
|
|
431
|
+
return _keyBindings[keycode];
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
/**
|
|
435
|
+
* unlock a key manually
|
|
436
|
+
* @name unlockKey
|
|
437
|
+
* @memberof input
|
|
438
|
+
* @public
|
|
439
|
+
* @param {string} action - user defined corresponding action
|
|
440
|
+
* @example
|
|
441
|
+
* // Unlock jump when touching the ground
|
|
442
|
+
* if (!this.falling && !this.jumping) {
|
|
443
|
+
* me.input.unlockKey("jump");
|
|
444
|
+
* }
|
|
445
|
+
*/
|
|
446
|
+
function unlockKey(action) {
|
|
447
|
+
_keyLocked[action] = false;
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
/**
|
|
451
|
+
* unbind the defined keycode
|
|
452
|
+
* @name unbindKey
|
|
453
|
+
* @memberof input
|
|
454
|
+
* @public
|
|
455
|
+
* @param {number} keycode - (See {@link input.KEY})
|
|
456
|
+
* @example
|
|
457
|
+
* me.input.unbindKey(me.input.KEY.LEFT);
|
|
458
|
+
*/
|
|
459
|
+
function unbindKey(keycode) {
|
|
460
|
+
// clear the event status
|
|
461
|
+
var keybinding = _keyBindings[keycode];
|
|
462
|
+
_keyStatus[keybinding] = 0;
|
|
463
|
+
_keyLock[keybinding] = false;
|
|
464
|
+
_keyRefs[keybinding] = {};
|
|
465
|
+
// remove the key binding
|
|
466
|
+
_keyBindings[keycode] = null;
|
|
467
|
+
_preventDefaultForKeys[keycode] = null;
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
export { KEY, bindKey, getBindingKey, initKeyboardEvent, isKeyPressed, keyBoardEventTarget, keyStatus, triggerKeyEvent, unbindKey, unlockKey };
|