This version is out of date

The version of Phaser downloaded from this page is not the current stable release.

Version: 1.0.0
Released: 13th September 2013
Next Version: 1.0.1
Previous Version: 0.9.6

Change Log

  • Massive refactoring across the entire codebase.
  • Removed Basic and GameObject and put Sprite on a diet. 127 properties and methods cut down to 32.
  • Added a new headless renderer for non-display related performance testing.
  • Added camera type to the CameraManager for future non-orthographic cameras.
  • Added Camera.destroy - now clears down the FX and unregisters itself from the CameraManager.
  • Added Camera.hide/show to hide Sprites or Groups from rendering (and removed corresponding hideFromCamera methods from Sprites/Groups)
  • Heavily optimised Group so it no longer creates any temporary variables in any methods.
  • Added Game.renderer which can be HEADLESS, CANVAS or WEBGL (coming soon)
  • Added Sprite.render which is a reference to IRenderer.renderSprite, but can be overridden for custom handling.
  • Refactored QuadTree so it no longer creates any temporary variables in any methods.
  • The Sprite Renderer now uses a single setTransform for scale, rotation and translation that respects the Sprite.origin value in all cases.
  • Sprite.modified is set to true if scale, rotation, skew or flip have been used.
  • Added Tween.loop property so they can now re-run themselves indefinitely.
  • Added Tween.yoyo property so they can reverse themselves after completing.
  • Added Gravity to the Physics component.
  • Removed Sprite.angle - use Sprite.rotation instead
  • Optimised separateX/Y and overlap so they don't use any temporary vars any more.
  • Added the new Physics.Body object to all Sprites. Used for all physics calculations in-game. Will be extended for Fixtures/Joints in future.
  • Added SpriteUtils.setOriginToCenter to quickly set the origin of a sprite based on either frameBounds or body.bounds
  • Added Sprite.Input component for tracking Input events over a Sprite
  • Added Sprite.Input.useHandCursor (for desktop)
  • Added Sprite.Input.justOver and justOut with a configurable ms delay
  • Added Sprite.Events component for a global easy to access area to listen to events from
  • Added Group.ID, each Group has a unique ID. Added Sprite.group (and Group.group) which is a reference to the Group it was added to.
  • Added Group.addNewSprite(x,y,key) for quick addition of new Sprites to a Group
  • Fixed Group.sort so the sortHandler is called correctly
  • Added Group.swap(a,b) to swap the z-index of 2 objects with optional rendering update boolean
  • Sprites dispatch new events for: killed, revived, added to Group and removed from Group.
  • Added Input drag, bounds, sprite bounds and snapping support.
  • Added the new ColorUtils class full of lots of handy color manipulation functions.
  • Fixed issue in Camera.inCamera check where it wouldn't take into consideration the Sprites scrollFactor.
  • Fixed issue with JSON Atlas loader incorrectly parsing the frames array.
  • Fixed bug in FrameData.getFrameByName where the first frame of the array would always be skipped.
  • Fixed bug where the Stage.backgroundColor property wasn't being saved correctly.
  • Made Stage.bootScreen and Stage.pauseScreen public so you can override them with your own States now.
  • Added the new OrientationScreen and Stage.enableOrientationCheck to allow for easy 'portrait/landscape only' game handling.
  • Added fix to StageScaleMode for 180 degree portrait orientation on iPad.
  • Added fix to orientation check so that it updates the input offsets correctly on rotation.
  • Added support for minWidth and minHeight to game scale size, so it can never go below those values when scaling.
  • Vastly improved orientation detection and response speed.
  • Added custom callback support for all Touch and Mouse Events so you can easily hook events to custom APIs.
  • Updated Game.loader and its methods. You now load images by: game.load.image() and also: game.load.atlas, game.load.audio, game.load.spritesheet, game.load.text. And you start it with game.load.start().
  • Added optional frame parameter to Phaser.Sprite (and game.add.sprite) so you can set a frame ID or frame name on construction.
  • Fixed bug where passing a texture atlas string would incorrectly skip the frames array.
  • Added AnimationManager.autoUpdateBounds to control if a new frame should change the physics bounds of a sprite body or not.
  • Added StageScaleMode.pageAlignHorizontally and pageAlignVertically booleans. When true Phaser will set the margin-left and top of the canvas element so that it is positioned in the middle of the page (based only on window.innerWidth).
  • Added support for globalCompositeOperation, opaque and backgroundColor to the Sprite.Texture and Camera.Texture components.
  • Added ability for a Camera to skew and rotate around an origin.
  • Moved the Camera rendering into CanvasRenderer to keep things consistent.
  • Added Stage.setImageRenderingCrisp to quickly set the canvas image-rendering to crisp-edges (note: poor browser support atm)
  • Sprite.width / height now report the scaled width height, setting them adjusts the scale as it does so.
  • Created a Transform component containing scale, skew, rotation, scrollFactor, origin and rotationOffset. Added to Sprite, Camera, Group.
  • Created a Texture component containing image data, alpha, flippedX, flippedY, etc. Added to Sprite, Camera, Group.
  • Added CameraManager.swap and CameraManager.sort methods and added a z-index property to Camera to control render order.
  • Added World.postUpdate loop + Group and Camera postUpdate methods.
  • Fixed issue stopping Pointer from working in world coordinates and fixed the world drag example.
  • For consistency renamed input.scaledX/Y to input.scale.
  • Added input.activePointer which contains a reference to the most recently active pointer.
  • Sprite.Transform now has upperLeft, upperRight, bottomLeft and bottomRight Point properties and lots of useful coordinate related methods.
  • Camera.inCamera check now uses the Sprite.worldView which finally accurately updates regardless of scale, rotation or rotation origin.
  • Added Math.Mat3 for Matrix3 operations (which Sprite.Transform uses) and Math.Mat3Utils for lots of use Mat3 related methods.
  • Added SpriteUtils.overlapsXY and overlapsPoint to check if a point is within a sprite, taking scale and rotation into account.
  • Added Cache.getImageKeys (and similar) to return an array of all the keys for all currently cached objects.
  • Added Group.bringToTop feature. Will sort the Group, move the given sprites z-index to the top and shift the rest down by one.
  • Brand new Advanced Physics system added and working! Woohoo :)
  • Fixed issue in Tilemap.parseTiledJSON where it would accidentally think image and object layers were map data.
  • Fixed bug in Group.bringToTop if the child didn't have a group property yet.
  • Fixed bug in FrameData.checkFrameName where the first index of the _frameNames array would be skipped.
  • Added isRunning boolean property to Phaser.Tween
  • Moved 'facing' property from Sprite.body to Sprite.texture (may move to Sprite core)
  • Added Sprite.events.onDragStart and onDragStop
  • A tilemap can now be loaded without a tile sheet, should you just want to get the tile data from it and not render.
  • Added new Sprite.events: onAnimationStart, onAnimationComplete, onAnimationLoop
  • Added in support for the Input component PriorityID value and refactored Input.Pointer to respect it. Rollovers are perfect now :)
  • Added 2 new State functions: loadRender and loadUpdate, are called the same as render and update but only during the load process
  • Fixed Input.stopDrag so it fires an onInputUp event as well from the sprite.
  • Added support for a preRender state - very useful for certain types of special effects.
  • Cameras are now limited so they can never be larger than the Game.Stage size.
  • Added a new Button Game Object for easily creating in-game UI and menu systems.
  • Fixed bug where Sprite.alpha wasn't properly reflecting Sprite.texture.alpha.
  • Fixed bug where the hand cursor would be reset on input up, even if the mouse was still over the sprite.
  • Fixed bug where pressing down then moving out of the sprite area wouldn't properly reset the input state next time you moved over the sprite.
  • Added the Sprite.tween property, really useful to avoid creating new tween vars in your local scope if you don't need them.
  • Added support for pagehide and pageshow events to Stage, hooked in to the pause/resume game methods.
  • Extended Device audio checks to include opus and webm.
  • Updated Loader and Cache so they now support loading of Audio() tags as well as Web Audio.
  • Set Input.recordPointerHistory to false, you now need to enable the pointer tracking if you wish to use it.
  • SoundManager will now automatically handle iOS touch unlocking.
  • Added TilemapLayer.putTileWorldXY to place a tile based on pixel values, and putTile based on tile map coordinates.
  • Dropped the StageScaleMode.setScreenSize iterations count from 40 down to 10 and document min body height to 2000px.
  • Added Phaser.Net for browser and network specific functions, currently includes query string parsing and updating methods.
  • Added a new CSS3 Filters component. Apply blur, grayscale, sepia, brightness, contrast, hue rotation, invert, opacity and saturate filters to the games stage.
  • Fixed the CircleUtils.contains and containsPoint methods.
  • Fixed issue with Input.speed values being too high on new touch events.
  • Added Sprite.bringToTop()
  • Added Stage.disableVisibilityChange to stop the auto pause/resume from ever firing.
  • Added crop support to the Texture component, so you can do Sprite.crop to restrict rendering to a specified Rectangle without distortion.
  • Added references to all the event listener functions so they can be cleanly destroyed.
  • Fixed interesting Firefox issue when an audio track ended it fired another 'canplaythrough' event, confusing the Loader.
  • Added the new PluginManager. Moved all the Camera FX over to plugins. Everything will be a plugin from now on.
  • Added Sprite.transform.centerOn(x,y) to quickly center a sprite on a coordinate without messing with the sprite origin and regardless of rotation.
  • Added Input.pollRate - this lets you limit how often Pointer events are handled (0 = every frame, 1 = every other frame, etc)
  • Renamed the 'init' function to 'preload'. It now calls load.start automatically.
  • Added CanvasUtils class, including ability to set image rendering, add a canvas to the dom and other handy things.