Version 3.85.0 - Itsuki - in development
New Features
BaseSoundManager.isPlaying
is 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.dispatchContextLost
is 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.dispatchContextRestore
is 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.setContextHandlers
is a new internal method with 2 optional parameters:contextLost
andcontextRestored
. These allow you to overwrite the defaultcontextLostHandler
andcontextRestoreHandler
handlers. (thanks @yaustar)Phaser.Textures.Frame#setCutPosition
is a new internal method with 2 optional parameters:x
andy
. These sets the x and y position within the source image to cut from.Phaser.Textures.Frame#setCutSize
is a new internal method with 2 parameters:width
andheight
. 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_SECONDARY
andPORTRAIT_SECONDARY
have been added to thePhaser.Scale.Orientation
object. 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.update
expanded:source
parameter is now type?object
, so it can be used for anything that is valid in the constructor.- New
format
parameter can update the texture format.
Updates
- Calling
Timeline.pause
will now pause any currently active Tweens that the Timeline had started (thanks @monteiz) - Calling
Timeline.resume
will now resume any currently paused Tweens that the Timeline had started (thanks @monteiz) - Calling
Timeline.clear
andTimeline.destroy
will now destroy any currently active Tweens that the Timeline had created. Previously, active tweens would continue to play to completion (thanks @monteiz) TimelineEvent
has 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
requestVideoFrame
polyfill has been updated to the latest release, which should resolve some SSR framework issues. Fix #6776 (thanks @lantictac) ScaleManager
listeners includes checks for thescreen.orientation
object and adds/removes achange
eventListener method to handle screen orientation changes on mobile devices. Theorientationchange
event is still maintained for backwards compatibility. Fix #6837 (thanks @rexrainbow)
Bug Fixes
- The
activePointers
game config option is now the correct amount of touch input pointers set. Fix #6783 (thanks @samme) - The method
TextureManager.checkKey
will now returnfalse
if 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
EXPAND
scale 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 forcircle
bodies prevents the bodies from being pushed. Fix #5617 (thanks @kainage) - Calling
addDeathZone()
on a particle emitter Game Object had a bug where theDeathZone
used world position coordinates.DeathZone
now uses local position coordinates following the particle emitter position. Fix #6371 (thanks @vforsh) - Updated the
GetLineToLine
method inGetLineToLine.js
to handle the case wheredx1
ordy1
values is zero. This ensures the function correctly returnsnull
in 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.js
where an extra empty line was added whensetMaxWidth
was called, and the width of the line was less than a word. Previously,yAdvance
was incorrectly incremented bylineHeight + lineSpacing
for each word, leading to an unintended increase in vertical space. The correction now calculatesyAdvance
based on thecurrentLine
index, ensuring that vertical spacing accurately reflects the number of lines. Fix #6807 (thanks @AlvaroNeuronup)
Input Bug Fixes
- The method
pointer.leftButtonReleased
will now returntrue
when multiple mouse buttons are being pressed. - The method
pointer.rightButtonReleased
will now returntrue
when multiple mouse buttons are being pressed. - The method
pointer.middleButtonReleased
will now returntrue
when multiple mouse buttons are being pressed. - The method
pointer.backButtonReleased
will now returntrue
when multiple mouse buttons are being pressed. - The method
pointer.forwardButtonReleased
will now returntrue
when 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.Map
and replacing it with a regular JSMap
instance. This means methods likecontains
andsetAll
will be gone. - We are removing
Phaser.Struct.Set
and replacing it with a regular JSSet
instance. This means methods likeiterateLocal
will be gone. - The
Create.GenerateTexture
, all of the Create Palettes and thecreate
folder will be removed. - The
phaser-ie9.js
entry-point will be removed along with all associated polyfills.