melonjs 10.1.1 → 10.2.3
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 +6 -10
- package/dist/melonjs.js +3114 -2866
- package/dist/melonjs.min.js +3 -3
- package/dist/melonjs.module.d.ts +2588 -2498
- package/dist/melonjs.module.js +2694 -2479
- package/package.json +10 -11
- package/src/audio/audio.js +43 -43
- package/src/camera/camera2d.js +52 -74
- package/src/entity/draggable.js +18 -17
- package/src/entity/droptarget.js +19 -18
- package/src/entity/entity.js +22 -26
- package/src/game.js +3 -3
- package/src/index.js +15 -11
- package/src/input/gamepad.js +13 -13
- package/src/input/input.js +1 -1
- package/src/input/keyboard.js +14 -16
- package/src/input/pointer.js +42 -35
- package/src/input/pointerevent.js +25 -33
- package/src/lang/deprecated.js +3 -3
- package/src/level/level.js +24 -16
- package/src/level/tiled/TMXGroup.js +6 -6
- package/src/level/tiled/TMXLayer.js +31 -31
- package/src/level/tiled/TMXObject.js +19 -19
- package/src/level/tiled/TMXTile.js +11 -12
- package/src/level/tiled/TMXTileMap.js +23 -21
- package/src/level/tiled/TMXTileset.js +13 -13
- package/src/level/tiled/TMXTilesetGroup.js +4 -4
- package/src/level/tiled/TMXUtils.js +13 -11
- package/src/level/tiled/renderer/TMXHexagonalRenderer.js +1 -1
- package/src/level/tiled/renderer/TMXIsometricRenderer.js +1 -1
- package/src/level/tiled/renderer/TMXRenderer.js +17 -17
- package/src/loader/loader.js +31 -27
- package/src/loader/loadingscreen.js +44 -75
- package/src/math/color.js +45 -64
- package/src/math/math.js +17 -17
- package/src/math/matrix2.js +46 -46
- package/src/math/matrix3.js +64 -64
- package/src/math/observable_vector2.js +45 -57
- package/src/math/observable_vector3.js +56 -70
- package/src/math/vector2.js +60 -59
- package/src/math/vector3.js +65 -64
- package/src/particles/emitter.js +53 -55
- package/src/particles/particle.js +1 -1
- package/src/physics/body.js +45 -51
- package/src/physics/bounds.js +36 -36
- package/src/physics/collision.js +15 -16
- package/src/physics/detector.js +10 -11
- package/src/physics/quadtree.js +18 -16
- package/src/physics/sat.js +17 -17
- package/src/physics/world.js +12 -10
- package/src/plugin/plugin.js +6 -6
- package/src/renderable/GUI.js +13 -18
- package/src/renderable/collectable.js +3 -3
- package/src/renderable/colorlayer.js +4 -4
- package/src/renderable/container.js +64 -46
- package/src/renderable/imagelayer.js +30 -31
- package/src/renderable/nineslicesprite.js +158 -69
- package/src/renderable/renderable.js +68 -67
- package/src/renderable/sprite.js +57 -43
- package/src/renderable/trigger.js +14 -15
- package/src/shapes/ellipse.js +27 -26
- package/src/shapes/line.js +8 -7
- package/src/shapes/poly.js +33 -31
- package/src/shapes/rectangle.js +50 -96
- package/src/state/stage.js +8 -8
- package/src/state/state.js +56 -56
- package/src/system/device.js +97 -84
- package/src/system/event.js +72 -72
- package/src/system/pooling.js +14 -14
- package/src/system/save.js +6 -3
- package/src/system/timer.js +20 -20
- package/src/text/bitmaptext.js +27 -33
- package/src/text/bitmaptextdata.js +9 -9
- package/src/text/text.js +118 -59
- package/src/tweens/easing.js +4 -4
- package/src/tweens/interpolation.js +4 -4
- package/src/tweens/tween.js +37 -27
- package/src/utils/agent.js +9 -8
- package/src/utils/array.js +4 -4
- package/src/utils/file.js +4 -4
- package/src/utils/function.js +5 -5
- package/src/utils/string.js +12 -12
- package/src/utils/utils.js +19 -19
- package/src/video/canvas/canvas_renderer.js +90 -90
- package/src/video/renderer.js +40 -39
- package/src/video/texture.js +85 -76
- package/src/video/texture_cache.js +11 -0
- package/src/video/video.js +31 -31
- package/src/video/webgl/buffer/vertex.js +9 -1
- package/src/video/webgl/glshader.js +20 -20
- package/src/video/webgl/webgl_compositor.js +47 -46
- package/src/video/webgl/webgl_renderer.js +104 -104
|
@@ -13,10 +13,10 @@ import { clamp } from "./../math/math.js";
|
|
|
13
13
|
* @extends me.Rect
|
|
14
14
|
* @memberOf me
|
|
15
15
|
* @constructor
|
|
16
|
-
* @param {
|
|
17
|
-
* @param {
|
|
18
|
-
* @param {
|
|
19
|
-
* @param {
|
|
16
|
+
* @param {number} x position of the renderable object (accessible through inherited pos.x property)
|
|
17
|
+
* @param {number} y position of the renderable object (accessible through inherited pos.y property)
|
|
18
|
+
* @param {number} width object width
|
|
19
|
+
* @param {number} height object height
|
|
20
20
|
*/
|
|
21
21
|
class Renderable extends Rect {
|
|
22
22
|
|
|
@@ -37,7 +37,7 @@ class Renderable extends Rect {
|
|
|
37
37
|
/**
|
|
38
38
|
* If true then physic collision and input events will not impact this renderable
|
|
39
39
|
* @public
|
|
40
|
-
* @type
|
|
40
|
+
* @type {boolean}
|
|
41
41
|
* @default true
|
|
42
42
|
* @name isKinematic
|
|
43
43
|
* @memberOf me.Renderable
|
|
@@ -49,7 +49,6 @@ class Renderable extends Rect {
|
|
|
49
49
|
* @public
|
|
50
50
|
* @type {me.Body}
|
|
51
51
|
* @see me.Body
|
|
52
|
-
* @see me.collision#check
|
|
53
52
|
* @name body
|
|
54
53
|
* @memberOf me.Renderable#
|
|
55
54
|
* @example
|
|
@@ -89,7 +88,7 @@ class Renderable extends Rect {
|
|
|
89
88
|
/**
|
|
90
89
|
* the renderable default transformation matrix
|
|
91
90
|
* @public
|
|
92
|
-
* @type me.Matrix2d
|
|
91
|
+
* @type {me.Matrix2d}
|
|
93
92
|
* @name currentTransform
|
|
94
93
|
* @memberOf me.Renderable#
|
|
95
94
|
*/
|
|
@@ -103,7 +102,7 @@ class Renderable extends Rect {
|
|
|
103
102
|
* a GUID will be allocated for any renderable object added <br>
|
|
104
103
|
* to an object container (including the `me.game.world` container)
|
|
105
104
|
* @public
|
|
106
|
-
* @type
|
|
105
|
+
* @type {string}
|
|
107
106
|
* @name GUID
|
|
108
107
|
* @memberOf me.Renderable
|
|
109
108
|
*/
|
|
@@ -112,7 +111,7 @@ class Renderable extends Rect {
|
|
|
112
111
|
/**
|
|
113
112
|
* an event handler that is called when the renderable leave or enter a camera viewport
|
|
114
113
|
* @public
|
|
115
|
-
* @type
|
|
114
|
+
* @type {Function}
|
|
116
115
|
* @default undefined
|
|
117
116
|
* @name onVisibilityChange
|
|
118
117
|
* @memberOf me.Renderable#
|
|
@@ -128,7 +127,7 @@ class Renderable extends Rect {
|
|
|
128
127
|
/**
|
|
129
128
|
* Whether the renderable object will always update, even when outside of the viewport<br>
|
|
130
129
|
* @public
|
|
131
|
-
* @type
|
|
130
|
+
* @type {boolean}
|
|
132
131
|
* @default false
|
|
133
132
|
* @name alwaysUpdate
|
|
134
133
|
* @memberOf me.Renderable
|
|
@@ -138,7 +137,7 @@ class Renderable extends Rect {
|
|
|
138
137
|
/**
|
|
139
138
|
* Whether to update this object when the game is paused.
|
|
140
139
|
* @public
|
|
141
|
-
* @type
|
|
140
|
+
* @type {boolean}
|
|
142
141
|
* @default false
|
|
143
142
|
* @name updateWhenPaused
|
|
144
143
|
* @memberOf me.Renderable
|
|
@@ -148,7 +147,7 @@ class Renderable extends Rect {
|
|
|
148
147
|
/**
|
|
149
148
|
* make the renderable object persistent over level changes<br>
|
|
150
149
|
* @public
|
|
151
|
-
* @type
|
|
150
|
+
* @type {boolean}
|
|
152
151
|
* @default false
|
|
153
152
|
* @name isPersistent
|
|
154
153
|
* @memberOf me.Renderable
|
|
@@ -159,7 +158,7 @@ class Renderable extends Rect {
|
|
|
159
158
|
* If true, this renderable will be rendered using screen coordinates,
|
|
160
159
|
* as opposed to world coordinates. Use this, for example, to define UI elements.
|
|
161
160
|
* @public
|
|
162
|
-
* @type
|
|
161
|
+
* @type {boolean}
|
|
163
162
|
* @default false
|
|
164
163
|
* @name floating
|
|
165
164
|
* @memberOf me.Renderable
|
|
@@ -175,7 +174,7 @@ class Renderable extends Rect {
|
|
|
175
174
|
* <i><b>Note:</b> Object created through Tiled will have their anchorPoint set to (0, 0) to match Tiled Level editor implementation.
|
|
176
175
|
* To specify a value through Tiled, use a json expression like `json:{"x":0.5,"y":0.5}`. </i>
|
|
177
176
|
* @public
|
|
178
|
-
* @type me.ObservableVector2d
|
|
177
|
+
* @type {me.ObservableVector2d}
|
|
179
178
|
* @default <0.5,0.5>
|
|
180
179
|
* @name anchorPoint
|
|
181
180
|
* @memberOf me.Renderable#
|
|
@@ -190,7 +189,7 @@ class Renderable extends Rect {
|
|
|
190
189
|
* When enabled, an object container will automatically apply
|
|
191
190
|
* any defined transformation before calling the child draw method.
|
|
192
191
|
* @public
|
|
193
|
-
* @type
|
|
192
|
+
* @type {boolean}
|
|
194
193
|
* @default true
|
|
195
194
|
* @name autoTransform
|
|
196
195
|
* @memberOf me.Renderable
|
|
@@ -214,7 +213,7 @@ class Renderable extends Rect {
|
|
|
214
213
|
* @see me.Renderable#setOpacity
|
|
215
214
|
* @see me.Renderable#getOpacity
|
|
216
215
|
* @public
|
|
217
|
-
* @type
|
|
216
|
+
* @type {number}
|
|
218
217
|
* @default 1.0
|
|
219
218
|
* @name me.Renderable#alpha
|
|
220
219
|
*/
|
|
@@ -223,7 +222,7 @@ class Renderable extends Rect {
|
|
|
223
222
|
/**
|
|
224
223
|
* a reference to the parent object that contains this renderable
|
|
225
224
|
* @public
|
|
226
|
-
* @type me.Container|me.Entity
|
|
225
|
+
* @type {me.Container|me.Entity}
|
|
227
226
|
* @default undefined
|
|
228
227
|
* @name me.Renderable#ancestor
|
|
229
228
|
*/
|
|
@@ -273,7 +272,7 @@ class Renderable extends Rect {
|
|
|
273
272
|
/**
|
|
274
273
|
* The name of the renderable
|
|
275
274
|
* @public
|
|
276
|
-
* @type {
|
|
275
|
+
* @type {string}
|
|
277
276
|
* @name name
|
|
278
277
|
* @default ""
|
|
279
278
|
* @memberOf me.Renderable
|
|
@@ -295,7 +294,7 @@ class Renderable extends Rect {
|
|
|
295
294
|
|
|
296
295
|
/**
|
|
297
296
|
* when true the renderable will be redrawn during the next update cycle
|
|
298
|
-
* @type {
|
|
297
|
+
* @type {boolean}
|
|
299
298
|
* @name isDirty
|
|
300
299
|
* @default false
|
|
301
300
|
* @memberOf me.Renderable#
|
|
@@ -315,26 +314,33 @@ class Renderable extends Rect {
|
|
|
315
314
|
this.setOpacity(1.0);
|
|
316
315
|
}
|
|
317
316
|
|
|
317
|
+
/**
|
|
318
|
+
* Whether the renderable object is floating, or contained in a floating container
|
|
319
|
+
* @public
|
|
320
|
+
* @see me.Renderable#floating
|
|
321
|
+
* @readonly
|
|
322
|
+
* @type {boolean}
|
|
323
|
+
* @name isFloating
|
|
324
|
+
* @memberOf me.Renderable
|
|
325
|
+
*/
|
|
326
|
+
get isFloating() {
|
|
327
|
+
return this.floating === true || (typeof this.ancestor !== "undefined" && this.ancestor.floating === true);
|
|
328
|
+
}
|
|
329
|
+
|
|
318
330
|
/**
|
|
319
331
|
* Whether the renderable object is visible and within the viewport
|
|
320
332
|
* @public
|
|
321
333
|
* @readonly
|
|
322
|
-
* @type
|
|
334
|
+
* @type {boolean}
|
|
323
335
|
* @default false
|
|
324
336
|
* @name inViewport
|
|
325
337
|
* @memberOf me.Renderable
|
|
326
338
|
*/
|
|
327
339
|
|
|
328
|
-
/**
|
|
329
|
-
* @ignore
|
|
330
|
-
*/
|
|
331
340
|
get inViewport() {
|
|
332
341
|
return this._inViewport;
|
|
333
342
|
}
|
|
334
343
|
|
|
335
|
-
/**
|
|
336
|
-
* @ignore
|
|
337
|
-
*/
|
|
338
344
|
set inViewport(value) {
|
|
339
345
|
if (this._inViewport !== value) {
|
|
340
346
|
this._inViewport = value;
|
|
@@ -348,14 +354,11 @@ class Renderable extends Rect {
|
|
|
348
354
|
* returns true if this renderable is flipped on the horizontal axis
|
|
349
355
|
* @public
|
|
350
356
|
* @see me.Renderable#flipX
|
|
351
|
-
* @type {
|
|
357
|
+
* @type {boolean}
|
|
352
358
|
* @name isFlippedX
|
|
353
359
|
* @memberOf me.Renderable
|
|
354
360
|
*/
|
|
355
361
|
|
|
356
|
-
/**
|
|
357
|
-
* @ignore
|
|
358
|
-
*/
|
|
359
362
|
get isFlippedX() {
|
|
360
363
|
return this._flip.x === true;
|
|
361
364
|
}
|
|
@@ -364,14 +367,11 @@ class Renderable extends Rect {
|
|
|
364
367
|
* returns true if this renderable is flipped on the vertical axis
|
|
365
368
|
* @public
|
|
366
369
|
* @see me.Renderable#flipY
|
|
367
|
-
* @type {
|
|
370
|
+
* @type {boolean}
|
|
368
371
|
* @name isFlippedY
|
|
369
372
|
* @memberOf me.Renderable
|
|
370
373
|
*/
|
|
371
374
|
|
|
372
|
-
/**
|
|
373
|
-
* @ignore
|
|
374
|
-
*/
|
|
375
375
|
get isFlippedY() {
|
|
376
376
|
return this._flip.y === true;
|
|
377
377
|
}
|
|
@@ -381,7 +381,7 @@ class Renderable extends Rect {
|
|
|
381
381
|
* @name getBounds
|
|
382
382
|
* @memberOf me.Renderable.prototype
|
|
383
383
|
* @function
|
|
384
|
-
* @
|
|
384
|
+
* @returns {me.Bounds} bounding box Rectangle object
|
|
385
385
|
*/
|
|
386
386
|
getBounds() {
|
|
387
387
|
if (typeof this._bounds === "undefined") {
|
|
@@ -402,7 +402,7 @@ class Renderable extends Rect {
|
|
|
402
402
|
* @name getOpacity
|
|
403
403
|
* @memberOf me.Renderable.prototype
|
|
404
404
|
* @function
|
|
405
|
-
* @
|
|
405
|
+
* @returns {number} current opacity value between 0 and 1
|
|
406
406
|
*/
|
|
407
407
|
getOpacity() {
|
|
408
408
|
return this.alpha;
|
|
@@ -413,7 +413,7 @@ class Renderable extends Rect {
|
|
|
413
413
|
* @name setOpacity
|
|
414
414
|
* @memberOf me.Renderable.prototype
|
|
415
415
|
* @function
|
|
416
|
-
* @param {
|
|
416
|
+
* @param {number} alpha opacity value between 0.0 and 1.0
|
|
417
417
|
*/
|
|
418
418
|
setOpacity(alpha) {
|
|
419
419
|
if (typeof (alpha) === "number") {
|
|
@@ -432,8 +432,8 @@ class Renderable extends Rect {
|
|
|
432
432
|
* @name flipX
|
|
433
433
|
* @memberOf me.Renderable.prototype
|
|
434
434
|
* @function
|
|
435
|
-
* @param {
|
|
436
|
-
* @
|
|
435
|
+
* @param {boolean} [flip=true] `true` to flip this renderable.
|
|
436
|
+
* @returns {me.Renderable} Reference to this object for method chaining
|
|
437
437
|
*/
|
|
438
438
|
flipX(flip = true) {
|
|
439
439
|
this._flip.x = !!flip;
|
|
@@ -447,8 +447,8 @@ class Renderable extends Rect {
|
|
|
447
447
|
* @name flipY
|
|
448
448
|
* @memberOf me.Renderable.prototype
|
|
449
449
|
* @function
|
|
450
|
-
* @param {
|
|
451
|
-
* @
|
|
450
|
+
* @param {boolean} [flip=true] `true` to flip this renderable.
|
|
451
|
+
* @returns {me.Renderable} Reference to this object for method chaining
|
|
452
452
|
*/
|
|
453
453
|
flipY(flip = true) {
|
|
454
454
|
this._flip.y = !!flip;
|
|
@@ -462,8 +462,8 @@ class Renderable extends Rect {
|
|
|
462
462
|
* @memberOf me.Renderable.prototype
|
|
463
463
|
* @see me.Renderable#currentTransform
|
|
464
464
|
* @function
|
|
465
|
-
* @param {me.Matrix2d}
|
|
466
|
-
* @
|
|
465
|
+
* @param {me.Matrix2d} m the transformation matrix
|
|
466
|
+
* @returns {me.Renderable} Reference to this object for method chaining
|
|
467
467
|
*/
|
|
468
468
|
transform(m) {
|
|
469
469
|
this.currentTransform.multiply(m);
|
|
@@ -479,7 +479,7 @@ class Renderable extends Rect {
|
|
|
479
479
|
* @memberOf me.Renderable
|
|
480
480
|
* @function
|
|
481
481
|
* @param {me.Renderable|me.Vector2d|me.Vector3d} target
|
|
482
|
-
* @
|
|
482
|
+
* @returns {number} angle in radians
|
|
483
483
|
*/
|
|
484
484
|
angleTo(target) {
|
|
485
485
|
var a = this.getBounds();
|
|
@@ -503,7 +503,7 @@ class Renderable extends Rect {
|
|
|
503
503
|
* @memberOf me.Renderable
|
|
504
504
|
* @function
|
|
505
505
|
* @param {me.Renderable|me.Vector2d|me.Vector3d} target
|
|
506
|
-
* @
|
|
506
|
+
* @returns {number} distance
|
|
507
507
|
*/
|
|
508
508
|
distanceTo(target) {
|
|
509
509
|
var a = this.getBounds();
|
|
@@ -527,7 +527,7 @@ class Renderable extends Rect {
|
|
|
527
527
|
* @memberOf me.Renderable.prototype
|
|
528
528
|
* @function
|
|
529
529
|
* @param {me.Renderable|me.Vector2d|me.Vector3d} target the renderable or position to look at
|
|
530
|
-
* @
|
|
530
|
+
* @returns {me.Renderable} Reference to this object for method chaining
|
|
531
531
|
*/
|
|
532
532
|
lookAt(target) {
|
|
533
533
|
var position;
|
|
@@ -550,13 +550,13 @@ class Renderable extends Rect {
|
|
|
550
550
|
* @name rotate
|
|
551
551
|
* @memberOf me.Renderable.prototype
|
|
552
552
|
* @function
|
|
553
|
-
* @param {
|
|
553
|
+
* @param {number} angle The angle to rotate (in radians)
|
|
554
554
|
* @param {me.Vector2d|me.ObservableVector2d} [v] an optional point to rotate around
|
|
555
|
-
* @
|
|
555
|
+
* @returns {me.Renderable} Reference to this object for method chaining
|
|
556
556
|
*/
|
|
557
|
-
rotate(angle) {
|
|
557
|
+
rotate(angle, v) {
|
|
558
558
|
if (!isNaN(angle)) {
|
|
559
|
-
this.currentTransform.rotate(angle);
|
|
559
|
+
this.currentTransform.rotate(angle, v);
|
|
560
560
|
//this.updateBoundsPos(this.pos.x, this.pos.y);
|
|
561
561
|
this.isDirty = true;
|
|
562
562
|
}
|
|
@@ -572,9 +572,9 @@ class Renderable extends Rect {
|
|
|
572
572
|
* @name scale
|
|
573
573
|
* @memberOf me.Renderable.prototype
|
|
574
574
|
* @function
|
|
575
|
-
* @param {
|
|
576
|
-
* @param {
|
|
577
|
-
* @
|
|
575
|
+
* @param {number} x a number representing the abscissa of the scaling vector.
|
|
576
|
+
* @param {number} [y=x] a number representing the ordinate of the scaling vector.
|
|
577
|
+
* @returns {me.Renderable} Reference to this object for method chaining
|
|
578
578
|
*/
|
|
579
579
|
scale(x, y) {
|
|
580
580
|
this.currentTransform.scale(x, y);
|
|
@@ -588,8 +588,8 @@ class Renderable extends Rect {
|
|
|
588
588
|
* @name scaleV
|
|
589
589
|
* @memberOf me.Renderable.prototype
|
|
590
590
|
* @function
|
|
591
|
-
* @param {me.Vector2d}
|
|
592
|
-
* @
|
|
591
|
+
* @param {me.Vector2d} v scaling vector
|
|
592
|
+
* @returns {me.Renderable} Reference to this object for method chaining
|
|
593
593
|
*/
|
|
594
594
|
scaleV(v) {
|
|
595
595
|
this.scale(v.x, v.y);
|
|
@@ -603,9 +603,9 @@ class Renderable extends Rect {
|
|
|
603
603
|
* @memberOf me.Renderable.prototype
|
|
604
604
|
* @function
|
|
605
605
|
* @protected
|
|
606
|
-
* @param {
|
|
607
|
-
* @
|
|
608
|
-
|
|
606
|
+
* @param {number} dt time since the last update in milliseconds.
|
|
607
|
+
* @returns {boolean} true if the renderable is dirty
|
|
608
|
+
*/
|
|
609
609
|
update(/* dt */) {
|
|
610
610
|
return this.isDirty;
|
|
611
611
|
}
|
|
@@ -616,7 +616,7 @@ class Renderable extends Rect {
|
|
|
616
616
|
* @name updateBounds
|
|
617
617
|
* @memberOf me.Renderable.prototype
|
|
618
618
|
* @function
|
|
619
|
-
* @
|
|
619
|
+
* @returns {me.Bounds} this shape bounding box Rectangle object
|
|
620
620
|
*/
|
|
621
621
|
updateBounds() {
|
|
622
622
|
super.updateBounds();
|
|
@@ -662,7 +662,7 @@ class Renderable extends Rect {
|
|
|
662
662
|
* @name getAbsolutePosition
|
|
663
663
|
* @memberOf me.Renderable.prototype
|
|
664
664
|
* @function
|
|
665
|
-
* @
|
|
665
|
+
* @returns {me.Vector2d}
|
|
666
666
|
*/
|
|
667
667
|
getAbsolutePosition() {
|
|
668
668
|
if (typeof this._absPos === "undefined") {
|
|
@@ -682,16 +682,17 @@ class Renderable extends Rect {
|
|
|
682
682
|
* @name onAnchorUpdate
|
|
683
683
|
* @memberOf me.Renderable.prototype
|
|
684
684
|
* @function
|
|
685
|
+
* @param {number} x the new X value to be set for the anchor
|
|
686
|
+
* @param {number} y the new Y value to be set for the anchor
|
|
685
687
|
*/
|
|
686
|
-
onAnchorUpdate(
|
|
688
|
+
onAnchorUpdate(x, y) {
|
|
687
689
|
// since the callback is called before setting the new value
|
|
688
690
|
// manually update the anchor point (required for updateBoundsPos)
|
|
689
|
-
this.anchorPoint.setMuted(
|
|
691
|
+
this.anchorPoint.setMuted(x, y);
|
|
690
692
|
// then call updateBounds
|
|
691
693
|
this.updateBoundsPos(this.pos.x, this.pos.y);
|
|
692
694
|
}
|
|
693
695
|
|
|
694
|
-
|
|
695
696
|
/**
|
|
696
697
|
* prepare the rendering context before drawing
|
|
697
698
|
* (apply defined transforms, anchor point). <br>
|
|
@@ -701,7 +702,7 @@ class Renderable extends Rect {
|
|
|
701
702
|
* @function
|
|
702
703
|
* @protected
|
|
703
704
|
* @param {me.CanvasRenderer|me.WebGLRenderer} renderer a renderer object
|
|
704
|
-
|
|
705
|
+
*/
|
|
705
706
|
preDraw(renderer) {
|
|
706
707
|
var bounds = this.getBounds();
|
|
707
708
|
var ax = bounds.width * this.anchorPoint.x,
|
|
@@ -752,7 +753,7 @@ class Renderable extends Rect {
|
|
|
752
753
|
* @function
|
|
753
754
|
* @protected
|
|
754
755
|
* @param {me.CanvasRenderer|me.WebGLRenderer} renderer a renderer object
|
|
755
|
-
|
|
756
|
+
*/
|
|
756
757
|
draw(/*renderer*/) {
|
|
757
758
|
// empty one !
|
|
758
759
|
}
|
|
@@ -765,7 +766,7 @@ class Renderable extends Rect {
|
|
|
765
766
|
* @function
|
|
766
767
|
* @protected
|
|
767
768
|
* @param {me.CanvasRenderer|me.WebGLRenderer} renderer a renderer object
|
|
768
|
-
|
|
769
|
+
*/
|
|
769
770
|
postDraw(renderer) {
|
|
770
771
|
|
|
771
772
|
// remove the previously applied tint
|
|
@@ -791,7 +792,7 @@ class Renderable extends Rect {
|
|
|
791
792
|
* @function
|
|
792
793
|
* @param {me.collision.ResponseObject} response the collision response object
|
|
793
794
|
* @param {me.Renderable} other the other renderable touching this one (a reference to response.a or response.b)
|
|
794
|
-
* @
|
|
795
|
+
* @returns {boolean} true if the object should respond to the collision (its position and velocity will be corrected)
|
|
795
796
|
* @example
|
|
796
797
|
* // colision handler
|
|
797
798
|
* onCollision(response) {
|
package/src/renderable/sprite.js
CHANGED
|
@@ -13,17 +13,17 @@ import Renderable from "./renderable.js";
|
|
|
13
13
|
* @extends me.Renderable
|
|
14
14
|
* @memberOf me
|
|
15
15
|
* @constructor
|
|
16
|
-
* @param {
|
|
17
|
-
* @param {
|
|
18
|
-
* @param {
|
|
19
|
-
* @param {me.Renderer.Texture|HTMLImageElement|HTMLCanvasElement|
|
|
20
|
-
* @param {
|
|
21
|
-
* @param {
|
|
22
|
-
* @param {
|
|
23
|
-
* @param {
|
|
24
|
-
* @param {
|
|
25
|
-
* @param {
|
|
26
|
-
* @param {
|
|
16
|
+
* @param {number} x the x coordinates of the sprite object
|
|
17
|
+
* @param {number} y the y coordinates of the sprite object
|
|
18
|
+
* @param {object} settings Configuration parameters for the Sprite object
|
|
19
|
+
* @param {me.Renderer.Texture|HTMLImageElement|HTMLCanvasElement|string} settings.image reference to a texture, spritesheet image or to a texture atlas
|
|
20
|
+
* @param {string} [settings.name=""] name of this object
|
|
21
|
+
* @param {string} [settings.region] region name of a specific region to use when using a texture atlas, see {@link me.Renderer.Texture}
|
|
22
|
+
* @param {number} [settings.framewidth] Width of a single frame within the spritesheet
|
|
23
|
+
* @param {number} [settings.frameheight] Height of a single frame within the spritesheet
|
|
24
|
+
* @param {string|me.Color} [settings.tint] a tint to be applied to this sprite
|
|
25
|
+
* @param {number} [settings.flipX] flip the sprite on the horizontal axis
|
|
26
|
+
* @param {number} [settings.flipY] flip the sprite on the vertical axis
|
|
27
27
|
* @param {me.Vector2d} [settings.anchorPoint={x:0.5, y:0.5}] Anchor point to draw the frame at (defaults to the center of the frame).
|
|
28
28
|
* @example
|
|
29
29
|
* // create a single sprite from a standalone image, with anchor in the center
|
|
@@ -58,7 +58,7 @@ class Sprite extends Renderable {
|
|
|
58
58
|
/**
|
|
59
59
|
* pause and resume animation
|
|
60
60
|
* @public
|
|
61
|
-
* @type
|
|
61
|
+
* @type {boolean}
|
|
62
62
|
* @default false
|
|
63
63
|
* @name me.Sprite#animationpause
|
|
64
64
|
*/
|
|
@@ -67,7 +67,7 @@ class Sprite extends Renderable {
|
|
|
67
67
|
/**
|
|
68
68
|
* animation cycling speed (delay between frame in ms)
|
|
69
69
|
* @public
|
|
70
|
-
* @type
|
|
70
|
+
* @type {number}
|
|
71
71
|
* @default 100
|
|
72
72
|
* @name me.Sprite#animationspeed
|
|
73
73
|
*/
|
|
@@ -76,7 +76,7 @@ class Sprite extends Renderable {
|
|
|
76
76
|
/**
|
|
77
77
|
* global offset for the position to draw from on the source image.
|
|
78
78
|
* @public
|
|
79
|
-
* @type me.Vector2d
|
|
79
|
+
* @type {me.Vector2d}
|
|
80
80
|
* @default <0.0,0.0>
|
|
81
81
|
* @name offset
|
|
82
82
|
* @memberOf me.Sprite#
|
|
@@ -86,7 +86,7 @@ class Sprite extends Renderable {
|
|
|
86
86
|
/**
|
|
87
87
|
* The source texture object this sprite object is using
|
|
88
88
|
* @public
|
|
89
|
-
* @type me.Renderer.Texture
|
|
89
|
+
* @type {me.Renderer.Texture}
|
|
90
90
|
* @name source
|
|
91
91
|
* @memberOf me.Sprite#
|
|
92
92
|
*/
|
|
@@ -148,7 +148,7 @@ class Sprite extends Renderable {
|
|
|
148
148
|
}
|
|
149
149
|
}
|
|
150
150
|
} else {
|
|
151
|
-
// HTMLImageElement/Canvas or
|
|
151
|
+
// HTMLImageElement/Canvas or {string}
|
|
152
152
|
this.image = (typeof settings.image === "object") ? settings.image : loader.getImage(settings.image);
|
|
153
153
|
// throw an error if image ends up being null/undefined
|
|
154
154
|
if (!this.image) {
|
|
@@ -219,7 +219,7 @@ class Sprite extends Renderable {
|
|
|
219
219
|
* @name isFlickering
|
|
220
220
|
* @memberOf me.Sprite.prototype
|
|
221
221
|
* @function
|
|
222
|
-
* @
|
|
222
|
+
* @returns {boolean}
|
|
223
223
|
*/
|
|
224
224
|
isFlickering() {
|
|
225
225
|
return this._flicker.isFlickering;
|
|
@@ -230,9 +230,9 @@ class Sprite extends Renderable {
|
|
|
230
230
|
* @name flicker
|
|
231
231
|
* @memberOf me.Sprite.prototype
|
|
232
232
|
* @function
|
|
233
|
-
* @param {
|
|
233
|
+
* @param {number} duration expressed in milliseconds
|
|
234
234
|
* @param {Function} callback Function to call when flickering ends
|
|
235
|
-
* @
|
|
235
|
+
* @returns {me.Sprite} Reference to this object for method chaining
|
|
236
236
|
* @example
|
|
237
237
|
* // make the object flicker for 1 second
|
|
238
238
|
* // and then remove it
|
|
@@ -261,11 +261,11 @@ class Sprite extends Renderable {
|
|
|
261
261
|
* @name addAnimation
|
|
262
262
|
* @memberOf me.Sprite.prototype
|
|
263
263
|
* @function
|
|
264
|
-
* @param {
|
|
265
|
-
* @param {
|
|
264
|
+
* @param {string} name animation id
|
|
265
|
+
* @param {number[]|string[]|object[]} index list of sprite index or name
|
|
266
266
|
* defining the animation. Can also use objects to specify delay for each frame, see below
|
|
267
|
-
* @param {
|
|
268
|
-
* @
|
|
267
|
+
* @param {number} [animationspeed] cycling speed for animation in ms
|
|
268
|
+
* @returns {number} frame amount of frame added to the animation (delay between each frame).
|
|
269
269
|
* @see me.Sprite#animationspeed
|
|
270
270
|
* @example
|
|
271
271
|
* // walking animation
|
|
@@ -361,9 +361,10 @@ class Sprite extends Renderable {
|
|
|
361
361
|
* @name setCurrentAnimation
|
|
362
362
|
* @memberOf me.Sprite.prototype
|
|
363
363
|
* @function
|
|
364
|
-
* @param {
|
|
365
|
-
* @param {
|
|
366
|
-
* @
|
|
364
|
+
* @param {string} name animation id
|
|
365
|
+
* @param {string|Function} [resetAnim] animation id to switch to when complete, or callback
|
|
366
|
+
* @param {boolean} [preserve_dt=false] if false will reset the elapsed time counter since last frame
|
|
367
|
+
* @returns {me.Sprite} Reference to this object for method chaining
|
|
367
368
|
* @example
|
|
368
369
|
* // set "walk" animation
|
|
369
370
|
* this.setCurrentAnimation("walk");
|
|
@@ -393,8 +394,8 @@ class Sprite extends Renderable {
|
|
|
393
394
|
*
|
|
394
395
|
* return false; // do not reset to first frame
|
|
395
396
|
* }).bind(this));
|
|
396
|
-
|
|
397
|
-
setCurrentAnimation(name, resetAnim,
|
|
397
|
+
*/
|
|
398
|
+
setCurrentAnimation(name, resetAnim, preserve_dt) {
|
|
398
399
|
if (this.anim[name]) {
|
|
399
400
|
this.current.name = name;
|
|
400
401
|
this.current.length = this.anim[this.current.name].length;
|
|
@@ -406,7 +407,7 @@ class Sprite extends Renderable {
|
|
|
406
407
|
this.resetAnim = undefined;
|
|
407
408
|
}
|
|
408
409
|
this.setAnimationFrame(this.current.idx);
|
|
409
|
-
if (!
|
|
410
|
+
if (!preserve_dt) {
|
|
410
411
|
this.dt = 0;
|
|
411
412
|
}
|
|
412
413
|
this.isDirty = true;
|
|
@@ -421,8 +422,8 @@ class Sprite extends Renderable {
|
|
|
421
422
|
* @name reverseAnimation
|
|
422
423
|
* @memberOf me.Sprite.prototype
|
|
423
424
|
* @function
|
|
424
|
-
* @param {
|
|
425
|
-
* @
|
|
425
|
+
* @param {string} [name] animation id
|
|
426
|
+
* @returns {me.Sprite} Reference to this object for method chaining
|
|
426
427
|
* @see me.Sprite#animationspeed
|
|
427
428
|
*/
|
|
428
429
|
reverseAnimation(name) {
|
|
@@ -440,8 +441,8 @@ class Sprite extends Renderable {
|
|
|
440
441
|
* @name isCurrentAnimation
|
|
441
442
|
* @memberOf me.Sprite.prototype
|
|
442
443
|
* @function
|
|
443
|
-
* @param {
|
|
444
|
-
* @
|
|
444
|
+
* @param {string} name animation id
|
|
445
|
+
* @returns {boolean}
|
|
445
446
|
* @example
|
|
446
447
|
* if (!this.isCurrentAnimation("walk")) {
|
|
447
448
|
* // do something funny...
|
|
@@ -457,8 +458,8 @@ class Sprite extends Renderable {
|
|
|
457
458
|
* @name setRegion
|
|
458
459
|
* @memberOf me.Sprite.prototype
|
|
459
460
|
* @function
|
|
460
|
-
* @param {
|
|
461
|
-
* @
|
|
461
|
+
* @param {object} region typically returned through me.Texture.getRegion()
|
|
462
|
+
* @returns {me.Sprite} Reference to this object for method chaining
|
|
462
463
|
* @example
|
|
463
464
|
* // change the sprite to "shadedDark13.png";
|
|
464
465
|
* mySprite.setRegion(game.texture.getRegion("shadedDark13.png"));
|
|
@@ -489,8 +490,8 @@ class Sprite extends Renderable {
|
|
|
489
490
|
* @name setAnimationFrame
|
|
490
491
|
* @memberOf me.Sprite.prototype
|
|
491
492
|
* @function
|
|
492
|
-
* @param {
|
|
493
|
-
* @
|
|
493
|
+
* @param {number} [idx=0] animation frame index
|
|
494
|
+
* @returns {me.Sprite} Reference to this object for method chaining
|
|
494
495
|
* @example
|
|
495
496
|
* // reset the current animation to the first frame
|
|
496
497
|
* this.setAnimationFrame();
|
|
@@ -505,7 +506,7 @@ class Sprite extends Renderable {
|
|
|
505
506
|
* @name getCurrentAnimationFrame
|
|
506
507
|
* @memberOf me.Sprite.prototype
|
|
507
508
|
* @function
|
|
508
|
-
* @
|
|
509
|
+
* @returns {number} current animation frame index
|
|
509
510
|
*/
|
|
510
511
|
getCurrentAnimationFrame() {
|
|
511
512
|
return this.current.idx;
|
|
@@ -516,18 +517,25 @@ class Sprite extends Renderable {
|
|
|
516
517
|
* @name getAnimationFrameObjectByIndex
|
|
517
518
|
* @memberOf me.Sprite.prototype
|
|
518
519
|
* @function
|
|
519
|
-
* @
|
|
520
|
-
* @
|
|
520
|
+
* @ignore
|
|
521
|
+
* @param {number} id the frame id
|
|
522
|
+
* @returns {number} if using number indices. Returns {object} containing frame data if using texture atlas
|
|
521
523
|
*/
|
|
522
524
|
getAnimationFrameObjectByIndex(id) {
|
|
523
525
|
return this.anim[this.current.name].frames[id];
|
|
524
526
|
}
|
|
525
527
|
|
|
526
528
|
/**
|
|
527
|
-
*
|
|
529
|
+
* update function. <br>
|
|
530
|
+
* automatically called by the game manager {@link me.game}
|
|
531
|
+
* @name update
|
|
532
|
+
* @memberOf me.Sprite.prototype
|
|
533
|
+
* @function
|
|
534
|
+
* @protected
|
|
535
|
+
* @param {number} dt time since the last update in milliseconds.
|
|
536
|
+
* @returns {boolean} true if the Sprite is dirty
|
|
528
537
|
*/
|
|
529
538
|
update(dt) {
|
|
530
|
-
|
|
531
539
|
// Update animation if necessary
|
|
532
540
|
if (!this.animationpause && this.current && this.current.length > 0) {
|
|
533
541
|
var duration = this.getAnimationFrameObjectByIndex(this.current.idx).delay;
|
|
@@ -597,7 +605,13 @@ class Sprite extends Renderable {
|
|
|
597
605
|
}
|
|
598
606
|
|
|
599
607
|
/**
|
|
600
|
-
*
|
|
608
|
+
* sprite draw. <br>
|
|
609
|
+
* automatically called by the game manager {@link me.game}
|
|
610
|
+
* @name draw
|
|
611
|
+
* @memberOf me.Sprite.prototype
|
|
612
|
+
* @function
|
|
613
|
+
* @protected
|
|
614
|
+
* @param {me.CanvasRenderer|me.WebGLRenderer} renderer a renderer object
|
|
601
615
|
*/
|
|
602
616
|
draw(renderer) {
|
|
603
617
|
// do nothing if we are flickering
|