Phaser/phaser: Release v3.85.0-beta.1
Name: phaser
Owner: Phaser
Release: Phaser v3.85.0 Beta 1
Released: 2024-06-21
License: MIT
Release Assets:
Version 3.85.0 - Itsuki - in development
New Features
BaseSoundManager.isPlayingis a new method that will return a boolean if the given sound key is playing. If you don't provide a key, it will return a boolean if any sound is playing (thanks @samme)WebGLRenderer.dispatchContextLostis a new internal method that is called when the WebGL context is lost. By default this is bound to the propertyWebGLRenderer.contextLostHandler. If you override the context loss handler, be sure to invoke this method in due course.WebGLRenderer.dispatchContextRestoreis a new internal method that is called when the WebGL context is restored. By default this is bound to the propertyWebGLRenderer.contextRestoreHandler. If you override the context restore handler, be sure to invoke this method in due course.WebGLRenderer.setContextHandlersis a new internal method with 2 optional parameters:contextLostandcontextRestored. These allow you to overwrite the defaultcontextLostHandlerandcontextRestoreHandlerhandlers. (thanks @yaustar)Phaser.Textures.Frame#setCutPositionis a new internal method with 2 optional parameters:xandy. These sets the x and y position within the source image to cut from.Phaser.Textures.Frame#setCutSizeis a new internal method with 2 parameters:widthandheight. These sets the width, and height of the area in the source image to cut. (thanks @FelipeIzolan)- Introduced new constants in
ORIENTATION_CONST.js. The constantsLANDSCAPE_SECONDARYandPORTRAIT_SECONDARYhave been added to thePhaser.Scale.Orientationobject. These constants represent the secondary landscape and portrait orientations respectively. This addition provides more granular control over device orientation handling in Phaser. Fix #6837 (thanks @rexrainbow)
WebGL Rendering Updates
WebGLTextureWrapper.updateexpanded:sourceparameter is now type?object, so it can be used for anything that is valid in the constructor.- New
formatparameter can update the texture format.
Updates
- Calling
Timeline.pausewill now pause any currently active Tweens that the Timeline had started (thanks @monteiz) - Calling
Timeline.resumewill now resume any currently paused Tweens that the Timeline had started (thanks @monteiz) - Calling
Timeline.clearandTimeline.destroywill now destroy any currently active Tweens that the Timeline had created. Previously, active tweens would continue to play to completion (thanks @monteiz) TimelineEventhas a new property calledtweenInstance. If the Timeline event has a tween that has been activated, this will hold a reference to it.- If you create a BitmapText with an invalid key it will now throw a runtime error. Previously it just issued a console warning and then crashed (thanks @samme)
- The console warnings when Audio files are missing/incorrect have been improved (thanks @samme)
- The
requestVideoFramepolyfill has been updated to the latest release, which should resolve some SSR framework issues. Fix #6776 (thanks @lantictac) ScaleManagerlisteners includes checks for thescreen.orientationobject and adds/removes achangeeventListener method to handle screen orientation changes on mobile devices. Theorientationchangeevent is still maintained for backwards compatibility. Fix #6837 (thanks @rexrainbow)
Bug Fixes
- The
activePointersgame config option is now the correct amount of touch input pointers set. Fix #6783 (thanks @samme) - The method
TextureManager.checkKeywill now returnfalseif the key is not a string, which fixes issues where a texture could be created if a key was given that was already in use (thanks Will Macfarlane). - Added all of the missing Loader Config values (such as
imageLoadType) to LoaderConfig, so they now appear in the TypeScript defs. - The
EXPANDscale mode had a bug that prevented it from using the world bounds cameras, cutting rendering short. Fix #6767 (thanks @Calcue-dev @rexrainbow) - Calling
getPipelineName()on a Game Object would cause a runtime error if running under Canvas. It now simply returnsnull. Fix #6799 (thanks @samme) - Calling the Arcade Body
setPushable(false)method forcirclebodies prevents the bodies from being pushed. Fix #5617 (thanks @kainage) - Calling
addDeathZone()on a particle emitter Game Object had a bug where theDeathZoneused world position coordinates.DeathZonenow uses local position coordinates following the particle emitter position. Fix #6371 (thanks @vforsh) - Updated the
GetLineToLinemethod inGetLineToLine.jsto handle the case wheredx1ordy1values is zero. This ensures the function correctly returnsnullin this case to prevent errors in calculations involving line segments. Fix #6579 (thanks @finscn) - Resolved all kerning issues in WebGL bitmap text rendering. This includes adjustments to glyph positioning and spacing, ensuring accurate and visually pleasing text display across all WebGL contexts. Fix #6631 (thanks @monteiz)
- Resolved an issue in
GetBitmapTextSize.jswhere an extra empty line was added whensetMaxWidthwas called, and the width of the line was less than a word. Previously,yAdvancewas incorrectly incremented bylineHeight + lineSpacingfor each word, leading to an unintended increase in vertical space. The correction now calculatesyAdvancebased on thecurrentLineindex, ensuring that vertical spacing accurately reflects the number of lines. Fix #6807 (thanks @AlvaroNeuronup)
Input Bug Fixes
- The method
pointer.leftButtonReleasedwill now returntruewhen multiple mouse buttons are being pressed. - The method
pointer.rightButtonReleasedwill now returntruewhen multiple mouse buttons are being pressed. - The method
pointer.middleButtonReleasedwill now returntruewhen multiple mouse buttons are being pressed. - The method
pointer.backButtonReleasedwill now returntruewhen multiple mouse buttons are being pressed. - The method
pointer.forwardButtonReleasedwill now returntruewhen multiple mouse buttons are being pressed. Fix #6027 (thanks @michalfialadev)
Examples, Documentation, Beta Testing and TypeScript
Thanks to the following for helping with the Phaser Examples, Beta Testing, Docs, and TypeScript definitions, either by reporting errors, fixing them, or helping author the docs:
@lgtome @samme @AlbertMontagutCasero @rexrainbow
Deprecation Warning for the next release
The next release of Phaser will make the following API-breaking changes:
- We are removing
Phaser.Struct.Mapand replacing it with a regular JSMapinstance. This means methods likecontainsandsetAllwill be gone. - We are removing
Phaser.Struct.Setand replacing it with a regular JSSetinstance. This means methods likeiterateLocalwill be gone. - The
Create.GenerateTexture, all of the Create Palettes and thecreatefolder will be removed. - The
phaser-ie9.jsentry-point will be removed along with all associated polyfills.