This version is out of date

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

Version: 1.1.3 - "Arafel"
Released: 29th November 2013
Next Version: 1.1.4
Previous Version: 1.1.2

Change Log

New Features

  • Phaser.Filter. A new way to use the new WebGL shaders/filters that the new version of Pixi supports.
  • Phaser.BitmapData object. A Canvas you can freely draw to with lots of functions. Can be used as a texture for Sprites. See the new examples and docs for details.
  • The entire Phaser library has been updated to match the new JSHint configuration.
  • Added a .jshintrc so contributions can be run through JSHint to help retain formatting across the library (thanks kevinthompson)
  • Added a new in-built texture. Sprites now use __default if no texture was provided (a 32x32 transparent PNG) or __missing if one was given but not found (a 32x32 black box with a green cross through it)
  • Loader can now load JavaScript files. Just use game.load.script('key', 'url') - the file will be turned into a script tag in the document head on successful load.
  • RenderTexture.render now takes a Phaser.Group. Also added renderXY for when you don't want to make a new Point object.
  • Physics.overlap now supports Sprites, Groups or Emitters and can perform group vs. group (etc) overlap checks with a custom callback and process handler.
  • Added Sound.externalNode which allows you to connect a Sound to an external node input rather than the SoundManager gain node.
  • Added SoundManager.connectToMaster boolean. Used in conjunction with Sound.externalNode you can easily configure audio nodes to connect together for special effects.
  • PluginManager.remove, added PluginManager.removeAll (thanks crazysam)
  • scrollFactorX/scrollFactorY have been added to TilemapLayers (thanks jcd-as)
  • Phaser.Game parent can now be an HTMLElement or a string (thanks beeglebug)
  • Now using the latest version of Pixi.js. Which means you can use all the sexy new WebGL filters :)
  • Sprite.animations.getAnimation will return an animation instance which was added by name.
  • Added Mouse.button which is set to the button that was pressed: Phaser.Mouse.LEFT_BUTTON, MIDDLE_BUTTON or RIGHT_BUTTON (thanks wKLV)
  • Added Mouse.pointerLock signal which you can listen to whenever the browser enters or leaves pointer lock mode.
  • StageScaleMode.forceOrientation allows you to lock your game to one orientation and display a Sprite (i.e. a "please rotate" screen) when incorrect.
  • World.visible boolean added, toggles rendering of the world on/off entirely.
  • Polygon class & drawPolygon method added to Graphics (thanks rjimenezda)
  • Added Group.iterate, a powerful way to count or return children that match a certain criteria. Refactored Group to use iterate, lots of repeated code cut.
  • Added Group.sort. You can now sort the Group based on any given numeric property (x, y, health), finally you can do depth-sorting :) Example created to show.
  • Enhanced renderTexture so it can accept a Phaser.Group object and improved documentation and examples.
  • Device.littleEndian boolean added. Only safe to use if the browser supports TypedArrays (which IE9 doesn't, but nearly all others do)
  • You can now call and simply pass it a key. The sound will play if the audio system is unlocked and optionally destroy itself on complete.
  • Mouse.capture is a boolean. If set to true then DOM mouse events will have event.preventDefault() applied, if false they will propogate fully.
  • The object returned by Math.sinCosGenerator now contains a length property.


  • Lots of documentation fixes and updates across nearly all files. Tilemap now documented for example and lots of instances of 'Description' filled out.
  • ArcadePhysics.updateMotion applies the dt to the velocity calculations as well as position now (thanks jcs)
  • RequestAnimationFrame now retains the callbackID which is passed to cancelRequestAnimationFrame.
  • Button now goes back to over state when setFrames used in action (thanks beeglebug)
  • plugins now have a postUpdate callback (thanks cocoademon)
  • Tided up the Graphics object (thanks BorisKozo)
  • If running in Canvas mode and you have a render function it will save the context and reset the transform before running your render function.
  • Sprite will now check the exists property of the Group it is in, if the Group.exists = false the Sprite won't update.
  • If you specify 'null' as a Group parent it will now revert to using the World as the parent (before only 'undefined' worked)
  • Skip preupdate/update for PIXI hierarchies in which an ancestor doesn't exist (thanks cocoademon)
  • can now accept either an array of URL strings or a single URL string (thanks crazysam + kevinthompson)
  • MSPointer updated to support IE11 by dropping the prefix from the event listeners.
  • Device.cocoonJS added to detect if the game is running under Cocoon or a native browser.
  • Loader now uses a new queue system internally, meaning you can have assets with the same key spread across different types.

Bug Fixes

  • Lots of fixes to the TypeScript definitions file (many thanks gltovar)
  • Tilemap commands use specified layer when one given (thanks Izzimach)
  • Mouse.stop now uses the true useCapture, which means the event listeners stop listening correctly (thanks beeglebug)
  • Input Keyboard example fix (thanks Atrodilla)
  • BitmapText.destroy now checks if it has a canvas before calling parentNode on it.
  • Group.swap had a hellish to find bug that only manifested when B-A upward swaps occured. Hours of debugging later = bug crushed.
  • Point.rotate asDegrees fixed (thanks BorisKozo)
  • ArcadePhysics.separateTile wasn't returning the value, so the custom process callback wasn't getting called (thanks flameiguana)
  • StageScaleMode.forceOrientation now correctly stores the forcePortrait value (thanks haden)
  • Fixes to Math and Loader (thanks theJare)
  • Tween - isRunning not reset when non-looped tween completes (thanks crazysam + kevinthompson)
  • Math.normalizeAngle and Math.wrapAngle (thanks theJare)
  • Device.isTouch modified to test maxTouchPointers instead of MSPointer.
  • InputHandler.checkPointerOver now checks the visible status of the Sprite Group before processing.
  • The Sprite hulls (used for tile collision) were not being updated in sprite->sprite separations (thanks jcs)
  • Plugins that had a postUpdate but no Update weren't being marked as active (thanks crazysam)
  • StateManager.onPausedCallback function is not called when the game is paused (thanks haden)
  • Fix for 'jitter' in scrolling where tilemaps & sprites are one frame off (thanks jcs)