Releases: phaserjs/phaser-ce
Phaser CE v2.15.0
Version 2.15.0 - 6 Mar 2020
API Changes
- Removed Phaser.Component.Core.skipTypeChecks.
Updates
- Phaser.Component.Core.init() no longer checks types.
Bug Fixes
Thanks
Phaser CE v2.14.0
API Changes
- Looped audio tag sounds no longer dispatch onPlay when looping, only onLoop.
- Looped Web Audio sound markers no longer dispatch onPlay when looping, only onLoop.
New Features
- You can pass
powerPreference
in your game config to set thepowerPreference
WebGL context attribute when creating the game. Possible values aredefault
,high-performance
, andlow-power
(#652).
Updates
- Rope.refresh no longer has a pointless duplicated modulus check in the for-loop and iterates from zero, allowing the removal of several direct array assignments.
Bug Fixes
- Fixed glitching sound playing when using looping audio-sprites with audio-tag (#653).
- A sprite's tintedTexture canvas is now returned to the Canvas Pool when the sprite is destroyed (#651).
Thanks
Phaser CE v2.13.3
Bug Fixes
- Fixed webGL making excessive calls, which was negatively impacting the frame-rate of low-end machines and mobile devices (#356, #641).
- Fixed Web Audio sounds failing to play in certain browsers (#588).
- Fixed Point.fuzzyEquals and Point.fuzzyEqualsXY (#634).
- Fixed unnecessarily marking a texture dirty when its
smoothed
property was set but not changed (#636). - Fixed some bad output when cloning FrameData (#640).
- Fixed
smoothed
setting on textures not being respected (#641). - Fixed updateTexture() happening on textures that hadn't loaded their source yet (#641).
- Fixed a flickering issue on some Android devices (#641).
Thanks
@Cerlancism, @SBCGames, @Tobepeter, @Weedshaker, @ferryhalim, @jamieallen1234, @ndee85, @pieshop, @samme
Phaser CE v2.13.2
Phaser CE v2.13.1
Bug Fixes
- Fixed incorrect Sound#currentTime after pause/resume, when using audio tags.
- Fixed missing mouse movement values when the pointer is locked.
- Fixed elastic easing functions.
Thanks
Phaser CE v2.13.0
API Changes
- When using audio tags, Sound#currentTime is now always synced to the audio source. This should prevent timing errors from playback latency (#585). After Sound#play() is called, Sound#isPlaying and Sound#onPlay are still triggered immediately (this is consistent with Sounds using Web Audio), but Sound#currentTime will not advance until playback does.
- When the mouse cursor leaves the game canvas, input out will be triggered only if Mouse#stopOnGameOut is true or MSPointer#stopOnGameOut is true (#429). They are false by default.
- MSPointer#pointerOverCallback replaces MSPointer's use of Mouse#mouseOverCallback.
- MSPointer#pointerOutCallback replaces MSPointer's use of Mouse#mouseOutCallback.
- MSPointer#stopOnGameOut replaces MSPointer's use of Mouse#stopOnGameOut.
- Removed Phaser.Mouse.WHEEL_UP. Use Phaser.MouseWheel.UP instead.
- Removed Phaser.Mouse.WHEEL_DOWN. Use Phaser.MouseWheel.DOWN instead.
- Removed Phaser.Mouse#releasePointerLock. Use Phaser.PointerLock#exit instead.
- Removed Phaser.Mouse#requestPointerLock. Use Phaser.PointerLock#request instead.
If you don't want to worry about managing both input handlers, you can disable MSPointer by passing { mspointer: false }
in your game config.
New Features
- Loader#tilemapCSV is a shortcut method for loading CSV maps.
- Loader#tilemapTiledJSON is a shortcut method for loading Tiled JSON maps.
Bug Fixes
- Animation speeds are more accurate (#606).
Thanks
Phaser CE v2.12.1
New Features
- ScaleManager#startFullScreen has an
options
argument.
Bug Fixes
- Fixed undefined value in BitmapData#smoothed.
- Better tracking of pointer out events (#624).
- Fixed alpha for different Creature regions (#625).
Updates
- Videos now have their
playsinline
attribute set. - Added a warning for Tiled JSON maps version > 1.1. Object properties and tile properties in these maps may not work in Phaser CE. You can enable the json1 plugin and reexport the map in Tiled 1.1 format to use these features in Phaser CE (#623).
- Hide navigation UI in fullscreen mode in Chrome/Android (#626)
Thanks
@daniel-nth, @highlyinteractive, @mikeks, @ndee85, @photonstorm, @samme, @thomasMeynckens
Phaser CE v2.12.0
If you're using the loadAnchors
argument in the Phaser.Creature constructor, you'll have to change your code.
New Features / API Changes
- BitmapText has a new property letterSpacing which accepts a positive or negative number to add or reduce spacing between characters.
- Camera now has new properties centerX and centerY to get the center of the camera's current viewport.
- Updated Creature runtime. The Phaser.Creature constructor arguments have changed: the
loadAnchors
argument was removed and auseFlatData
argument was added. Phaser.GameObjectFactory#creature also added arguments (mesh
,animation
,useFlatData
) but its existing arguments weren't changed. - Phaser.Creature now has new functions
setMetaData
,enableSkinSwap
,disableSkinSwap
,setActiveItemSwap
, andremoveActiveItemSwap
adding Skin and Item Swapping support for Creature animations. - Phaser.Graphics#getVisualBounds is a new method that gets the bounds (extent) of the shapes drawn on a graphics object (#578). Unlike Phaser.Graphics#getBounds, it gives the same result whether or not a graphics object is being used as a mask.
- Phaser.SoundManager#baseLatency is a new property representing the processing latency of the underlying Web Audio context, in seconds.
Bug Fixes
- Fixed issue causing BitmapFont to fail loading if a kerning value for a character that doesn't exist in the font is defined in the xml/json (#598).
- Fix for Creature runtime modifying the JSON object you give it from the Phaser.Cache making subsequent uses of that JSON not behave in various ways, depending on how you use the runtime (when having multiple Creature objects of the same character for example).
- Phaser.PointerLock#stop will now only stop its event listeners if they were started in the first place. This avoids issues where a 3rd party lib, such as Ionic, intercepts event functions and parses them itself (thanks @photonstorm and manuelhe).
- Fixed an error when destroying a touch-locked Video (#616).
- Fixed an error when unplugging a gamepad (#610).
- Fixed streaming video in Firefox (#607).
- Fixed global volume not affecting sounds not currently playing, when using HTML audio (as in IE11) (#617).
Thanks
@Aram19, manuelhe, @micsun-al, @photonstorm, @rroylance, @samme, @Weedshaker, @wtravO
Phaser CE v2.11.1
Version 2.11.1 - 2 October 2018
Bug Fixes
- Fixed an error passing
box2d
options in the game configuration settings (#553). - Fixed some compressed texture formats failing to load (#562).
- Fixed an issue where if the WebGL renderer failed to initialize that RenderTexture's would still try to use it if no renderer was provided (#575).
- Fixed an inconsistent return value in BitmapData#copy (#580).
- Tweens are now cleaned up completely when destroying the game (#581).
- Game now nulls a reference to itself from PIXI after destroy (#583).
- Fixed a BitmapFont frame error when using trim frame in atlas (#587).
- Fixed BitmapData#shadow ignoring blur or x/y offset when set to 0 (#591).
Updates
- AnimationParser.spriteSheet now tells you the minimum image dimensions it expects if it fails to produce at least one complete frame from the spritesheet (#559).
- Game now checks SoundManager's
muteOnPause
property whenever the game'spaused
property is set so one can control whether sounds play when the game is manually paused. Previously, the property was only used when the game focus was lost in the DOM (#572).
TypeScript definitions
- Fixed the definition for bitmapText() in GameObjectFactory (#561).
- Fixed the definition for clear() in RenderTexture (#573).
- Fixed the definition for Video volume.
Documentation
- Changed the game configuration object's
canvasID
property name. The previous name,canvasId
, was incorrect and would be ignored. - Clarified the
spacing
argument in Loader#spritesheet (#448, #559). - Corrected P2#createGearConstraint (#566).
- Corrected Tilemap#copy, Tilemap#replace (#586).
- Typo (#594).
- Corrected Key#upDuration, Keyboard#upDuration (#595).
Thanks
@B10215029, @CorayThan, @FostUK, @Jazcash, @Lucas-C, @Mertank, @Nek-, @aeonwilliams, @dywedir, @foreverip, @giniwren, @josalmi, @joshlory, @rydash, @samme, @tiagokeller, @zhaxiu3
Phaser CE v2.11.0
Version 2.11.0 - 26 June 2018
If you're starting or stopping input handlers manually, you'll have to make some simple changes to your code.
API Changes / New Features
-
Phaser now starts the Pointer Events handler (with capture off) or the Mouse handler (with capture off), but not both. This makes input behavior more consistent and avoids some rare conflicts between the two when running simultaneously.
If you want to disable the Pointer Events handler, pass
{ mspointer: false }
in your game config. The Mouse handler will be used instead.If you want to run both handlers together, you can start the Mouse handler manually. You should also turn on capture for the Pointer Events handler to avoid duplicate events:
game.input.mouse.start(); game.input.mspointer.capture = true;
-
Mouse wheel input was moved to
input.mouseWheel
. The changed properties areinput.mouse.wheelDelta
→input.mouseWheel.delta
input.mouse.mouseWheelCallback
→input.mouseWheel.callback
The old properties will keep working for now.
-
Pointer lock input was moved to
input.pointerLock
. The changed properties areinput.mouse.pointerLock
→input.pointerLock.onChange
input.mouse.requestPointerLock()
→input.pointerLock.request()
input.mouse.locked
→input.pointerLock.locked
input.mouse.releasePointerLock()
→input.pointerLock.exit()
The old properties will keep working for now.
There is a new Signal,
input.pointerLock.onError
, dispatched when a request fails.Beware that Chrome < 68 doesn't pass movement values when using Pointer Events with pointer lock, so you should use the Mouse handler instead for that.
-
game.debug.inputInfo()
now shows which input handlers and pointers are active. -
All the input handlers have an
active
property that shows whether they've been started. Theirstart
methods return true if they've been started or false otherwise. -
The
skipFrames
argument in AnimationParser#spriteSheet now works as an offset (#514). When positive, it's an offset from the start of the parsed frame list; when negative, it's an offset from the end. NegativeframeWidth
andframeHeight
arguments are no longer allowed. -
preRender() and postRender() hooks are no longer called for the HEADLESS renderer.
-
game.make.group()
no longer assigns a default parent. This is more consistent with the rest of the game.make methods (#525). Usegame.add.group()
instead to add the Group to the game world. -
Point.parse() no longer converts coordinates to integers (#502). Use the new method Point.trunc() as well if you want the previous behavior.
-
The default Debug#font is now '14px monospace'.
-
The unused and deprecated property MSPointer#button was removed.
New Features
- States have a new postUpdate method hook. It's called after game objects have received all their own updates (including physics), but before the Stage has calculated the final transformations.
- Debug#spriteInfo shows the sprite's parent, if any.
- When a sprite is being dragged you can read its change in position (as
deltaX
,deltaY
) in the onDragUpdate handler. - Phaser.Math.trunc() truncates a number.
- Phaser.EmptyRectangle replaces PIXI.EmptyRectangle.
- Debug#device shows device graphics, audio, and input support. It may be helpful on devices where you can't see
console
output easily. - Debug#pointer shows the pointer's movementX/movementY values and button states (for mouse pointers).
maxPointers
can be passed in the game config, setting Input#maxPointers.
Updates
- Removed the unnecessary 'Audio source already exists' warning.
Bug Fixes
- Masks are no longer disabled by getBounds() and are excluded from bounds calculations (#334).
- Sprites' bringToTop() and sendToBack() methods now work as expected for all parent types, not just Groups (#549).
Thanks
@giniwren, @griever989, @mindcity, @omretterry, @photonstorm, @samme, @Siri0n, @tobspr