mirror of
https://github.com/photonstorm/phaser
synced 2024-12-22 19:13:37 +00:00
6.5 KiB
6.5 KiB
Version 3.80.0 - Nino - in dev
New Features
- The Scale Manager has a new scale mode called
EXPAND
. This is inspired by the Expand mode in Godot: "Keep aspect ratio when stretching the screen, but keep neither the base width nor height. Depending on the screen aspect ratio, the viewport will either be larger in the horizontal direction (if the screen is wider than the base size) or in the vertical direction (if the screen is taller than the original size)" (thanks @rexrainbow) - Phaser now performs a WebGL Context Restore to keep the game running after losing WebGL context. This affects many parts of the rendering system, but everything should work just the same unless you're doing something very technical. See the link for more details.
Updates
- The
TweenChainBuilder
was incorrectly setting thepersist
flag on the Chain totrue
, which goes against what the documentation says. It now correctly sets it tofalse
. This means if you previously had a Tween Chain that was persisting, it will no longer do so, so add the property to regain the feature. - The
dropped
argument has now been adeded to the documentation for theDRAG_END
andGAMEOBJECT_DRAG_END
events (thanks @samme) Container.onChildDestroyed
is a new internal method used to destroy Container children. Previously, if you destroyed a Game Object in an exclusive Container, the game object would (momentarily) move onto the Scene display list and emit an ADDED_TO_SCENE event. Also, if you added a Sprite to a non-exclusive Container and stopped the Scene, you would get a TypeError (evaluating 'this.anims.destroy'). This happened because the fromChild argument in the DESTROY event was misinterpreted as destroyChild in the Container's remove(), and the Container was calling the Sprite's destroy() again. (thanks @samme)- The
Text
andTileSprite
Game Objects now place their textures into the globalTextureManager
and a_textureKey
private string property has been added which contains a UUID to reference that texture. Tilemaps.Components.WeightedRandomize
now uses the PhaserMath.RND.frac
method with a seed instead of theMath.Random
static method. (thanks @jorbascrumps)Tilemaps.Components.IsometricCullTiles
does theCheckIsoBounds
method check last when building the outputArray, as to help optimize in situations where the tile would not be visible anyways. (thanks @zegenie)Tilemaps.Components.WeightedRandomize
now uses the PhaserMath.RND.frac
method with a seed instead theMath.Random
static method. (thanks @jorbascrumps)- The
Layer.removeAll
,remove
andadd
methods have been removed. These methods are all still available via theList
class that Layer inherits, but thedestroyChild
parameters are no longer available. - The
Renderer.Canvas
andRenderer.WebGL
will now only be included in the build file if the corresponding feature flagsCANVAS_RENDERER
and/orWEBGL_RENDERER
are set totrue
. For Canvas only builds this saves a lot of space in the build (thanks @samme) - You can now specify an
autoResize
boolean in theRenderTargetConfig
which is passed to the Render Targets when they are created by a pipeline. - The
UtilityPipeline
now setsautoResize
totrue
in its Render Target Config, so that the globalfullFrame
andhalfFrame
Render Targets will automatically resize if the renderer changes. Actions.PlaceOnLine
now has an addedease
parameter which accepts a string from the EaseMap or a custom ease function to allow for different distrubutions along a line. (thanks @sB3p)
Bug Fixes
- The
InputManager.onTouchMove
function has been fixed so it now correctly handles touch events on pages that have scrolled horizontally or vertically and shifted the viewport. Fix #6489 (thanks @somechris @hyewonjo) Factory.staticBody
had the wrong return type in the docs/TS defs. Fix #6693 (thanks @ddhaiby)- The
Time.Timeline
class didn't show as extending the Event Emitter, or haveconfig
as an optional argument in the docs / TS defs. Fix #6673 (thanks @ghclark2) Animations.AnimationFrame#duration
is now the complete duration of the frame. Before this includedAnimations.AnimationState#msPerFrame
with the value ofAnimations.AnimationFrame#duration
. The fix to removeAnimations.AnimationState#msPerFrame
fromAnimations.AnimationFrame#duration
has been removed fromAnimations.AnimationManager#createFromAseprite
because of this clarification. Fix #6712 (thanks @Nerodon @TomMalitz)- The
NineSlice
Game Object methodsetSize
now recalculates its origin by calling theupdateDisplayOrigin
method. (thanks @dhashvir) - When a
Layer
Game Object is destroyed, i.e. from changing or restarting a Scene, it will no longer cause an error when trying to destroy the children on its display list. Fix #6675 (thanks @crockergd @gm0nk) DynamicTexture
will now automatically callsetSize(width, height)
for both WebGL and Canvas. Previously it only did it for WebGL. This fixes an issue where DynamicTextures in Canvas mode would have a width and height of -1. Fix #6682 (thanks @samme)DynamicTexture.setSize
will now check to see if theglTexture
bound to the current frame is stale, and if so, destroy it before binding the one from the Render Target. This fixes an issue where constantly destroying and creating Dynamic Textures would cause a memory leak in WebGL. Fix #6669 (thanks @DavidTalevski)- The
BloomFX
andBlurFX
and any custom pipeline that relies on using theUtilityPipeline
full or half frame targets will now correctly draw even after the renderer size changes. Fix #6677 (thanks @Nerodon) - The
PostFXPipeline.postBatch
method will now skiponDraw
if the pipeline hasn't booted, introducing an artificial frame skip. This should potentially fix glitch errors on mobile devices where Post FX would appear corrupted for a single frame. Fix #6681 (thank @moufmouf @tongliang999) - The
Matter.Body
functionscale
has been updated so if the Body originally had aninertia
ofInfinity
this will be restored at the end of the call. This happens if you set a Matter Body to have fixed rotation. Fix #6369 (thanks @sushovande) - Modified
RandomDataGenerator.weightedPick
method to avoid sampling past the last element. Fix #6701 (thanks @jameskirkwood)
Examples, Documentation, Beta Testing and TypeScript
My thanks to the following for helping with the Phaser 3 Examples, Beta Testing, Docs, and TypeScript definitions, either by reporting errors, fixing them, or helping author the docs:
@AlvaroEstradaDev @stevenwithaph @paxperscientiam @samme @actionmoon @rafael-lua