This version is out of date

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

Version: 0.9.6
Released: 24th May 2013
Next Version: 1.0.0
Previous Version: 0.9.5

Change Log

  • Virtually every class now has documentation - if you spot a typo or something missing please shout (thanks pixelpicosean).
  • Grunt file updated to produce the new Special FX JS file (thanks HackManiac).
  • Fixed issue stopping Phaser working on iOS 5 (iPad 1).
  • Created new mobile test folder, updated index.php to use mobile CSS and made some mobile specific tests.
  • Fixed a few speed issues on Android 2.x stock browser.
  • Moved Camera context save/restore back inside parameter checks (sped-up Samsung S3 stock browser).
  • Fixed bug with StageScaleMode.checkOrientation not respecting the NO_SCALE value.
  • Added MSPointer support (thanks Diego Bezerra).
  • Added Camera.clear to perform a clearRect instead of a fillRect if needed (default is false).
  • Swapped Camera.opaque default from true to false re: performance.
  • Updated Stage.visibilityChange to avoid pause screen locking in certain situations.
  • Added StageScaleMode.enterLandscape and enterPortrait signals for easier device orientation change checks.
  • Added StageScaleMode.isPortrait.
  • Updated StageScaleMode to check both window.orientationchange and window.resize events.
  • Updated RequestAnimationFrame to use performance.now for sub-millisecond precision and to drive the Game.time.update loop.
  • Updated RequestAnimationFrame setTimeout to use fixed timestep and re-ordered callback sequence. Android 2/iOS5 performance much better now.
  • Removed Stage.ORIENTATION_LANDSCAPE statics because the values should be taken from Stage.scale.isPortrait / isLandscape.
  • Removed Stage.maxScaleX/Y and moved them into StageScaleMode.minWidth, minHeight, maxWidth and maxHeight.
  • Fixed Stage.scale so that it resizes without needing an orientation change first.
  • Added StageScaleMode.startFullscreen(), stopFullScreen() and isFullScreen for making use of the FullScreen API on desktop browsers.
  • Swapped Stage.offset from Point to MicroPoint.
  • Swapped Stage.bounds from Rectangle to Quad.
  • Added State.destroy support. A states destroy function is called when you switch to a new state (thanks JesseFreeman).
  • Added Sprite.fillColor, used in the Sprite render if no image is loaded (set via the property or Sprite.makeGraphic) (thanks JesseFreeman).
  • Renamed Phaser.Finger to Phaser.Pointer.
  • Updated all of the Input classes so they now use Input.pointers 1 through 10.
  • Updated Touch and MSPointer to allow multi-touch support (when the hardware supports it) and created new tests to show this.
  • Added Input.getPointer, Input.getPointerFromIdentifier, Input.totalActivePointers and Input.totalInactivePointers.
  • Added Input.startPointer, Input.updatePointer and Input.stopPointer.
  • Phaser Input now confirmed working on Windows Phone 8 (Nokia Lumia 920).
  • Added Input.maxPointers to allow you to limit the number of fingers your game will listen for on multi-touch systems.
  • Added Input.addPointer. By default Input will create 5 pointers (+1 for the mouse). Use addPointer() to add up to a maximum of 10.
  • Added Input.position - a Vector2 object containing the most recent position of the most recently active Pointer.
  • Added Input.getDistance. Find the distance between the two given Pointer objects.
  • Added Input.getAngle. Find the angle between the two given Pointer objects.
  • Pointer.totalTouches value keeps a running total of the number of times the Pointer has been pressed.
  • Added Pointer.position and positionDown. positionDown is placed on touch and position is update on move, useful for tracking distance/direction/gestures.
  • Added Game.state - now contains a reference to the current state object (if any was given).
  • Moved the Input start events from the constructors to a single Input.start method.
  • Added Input.disabled boolean to globally turn off all input event processing.
  • Added Input.Mouse.disabled, Input.Touch.disabled, Input.MSPointer.disabled and Input.Keyboard.disabled.
  • Added Device.mspointer boolean. true if MSPointer is available on the device.
  • Added Input.onDown, onUp, onTap, onDoubleTap and onHold signals - all fired by the mouse or touch.
  • Added Input.recordPointerHistory to record the x/y coordinates a Pointer tracks through. Also Input.recordRate and Input.recordLimit for fine control.
  • Added Input.multiInputOverride which can be MOUSE_OVERRIDES_TOUCH, TOUCH_OVERRIDES_MOUSE or MOUSE_TOUCH_COMBINE.
  • Added GameObject.setBoundsFromWorld to quickly set the bounds of a game object to match those of the current game world.
  • Added GameObject.canvas and GameObject.context. By default they reference Stage.canvas but can be changed to anything, i.e. a DynamicTexture
  • The new canvas and context references are applied to Sprite, GeomSprite and TilemapLayer
  • Added DynamicTexture.assignCanvasToGameObjects() to allow you to redirect GameObject rendering en-mass to a DynamicTexture
  • Added DynamicTexture.render(x,y) to render the texture to the Stage canvas
  • Added Basic.ignoreGlobalUpdate - stops the object being updated as part of the main game loop, you'll need to call update on it yourself
  • Added Basic.ignoreGlobalRender - stops the object being rendered as part of the main game loop, you'll need to call render on it yourself
  • Added forceUpdate and forceRender parameters to Group.update and Group.render respectively. Combined with ignoreGlobal you can create custom rendering set-ups
  • Fixed Loader.progress calculation so it now accurately passes a value between 0 and 100 to your loader callback
  • Added a 'hard reset' parameter to Input.reset. A hard reset clears Input signals (such as on a state swap), a soft (such as on game pause) doesn't
  • Added Device.isConsoleOpen() to check if the browser console is open. Tested on Firefox with Firebug and Chrome with DevTools
  • Added delay parameter to Tween.to()
  • Fixed bug where GeomSprite.renderOutline was being ignored for Circle objects
  • Fixed bug with GeomSprite circles rendering at twice the size they should have been and offset from actual x/y values
  • Added Sprite.cacheKey which stores the key of the item from the cache that was used for its texture (if any)
  • Added GameMath.shuffleArray
  • Updated Animation.frame to return the index of the currentFrame if set
  • Added Quad.copyTo and Quad.copyFrom
  • Removed the bakedRotations parameter from Emiter.makeParticles - update your code accordingly!
  • Updated various classes to remove the Flixel left-over CamelCase parameters
  • Updated QuadTree to use the new CollisionMask values and significantly optimised and reduced overall class size
  • Updated Collision.seperate to use the new CollisionMask
  • Added a callback context parameter to Game.collide, Collision.overlap and the QuadTree class
  • Stage.canvas now calls preventDefault() when the context menu is activated (oncontextmenu)
  • Added Point.rotate to allow you to rotate a point around another point, with optional distance clamping. Also created test cases.
  • Added Group.alpha to apply a globalAlpha before the groups children are rendered. Useful to save on alpha calls.
  • Added Group.globalCompositeOperation to apply a composite operation before all of the groups children are rendered.
  • Added Camera black list support to Sprite and Group along with Camera.show, Camera.hide and Camera.isHidden methods to populate them.
  • Added GameMath.rotatePoint to allow for point rotation at any angle around a given anchor and distance
  • Updated World.setSize() to optionally update the VerletManager dimensions as well
  • Added GameObject.setPosition(x, y)
  • Added Quad.intersectsRaw(left, right, top, bottom, tolerance)
  • Updated Sprite.inCamera to correctly apply the scrollFactor to the camera bounds check
  • Added Loader.crossOrigin property which is applied to loaded Images
  • Added AnimationManager.destroy() to clear out all local references and objects
  • Added the clearAnimations parameter to Sprite.loadGraphic(). Allows you to change animation textures but retain the frame data.
  • Added the GameObjectFactory to Game. You now make Sprites like this: game.add.sprite(). Much better separation of game object creation methods now. But you'll have to update ALL code, sorry! (blame JesseFreeman for breaking your code and coming up with the idea :)
  • Added GameObjectFactory methods to add existing objects to the game world, such as existingSprite(), existingTween(), etc.
  • Added the GameObjectFactory to Phaser.State
  • Added new format parameter to Loader.addTextureAtlas defining the format. Currently supported: JSON Array and Starling/Sparrow XML.