This version is out of date

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

Version: 1.1.4 - "Kandor"
Released: 5th February 2014
Next Version: 1.1.5
Previous Version: 1.1.3

Change Log

Significant API changes

  • Loader.tileset has been removed as it's no longer required, this was as part of the Tilemap system overhaul.
  • TilemapLayers are now created via the Tilemap object itself: map.createLayer(x, y, width, height, tileset, layer, group) and no longer via the GameObjectFactory.
  • Tilemap.createFromObjects can now turn a bunch of Tiled objects into Sprites in one single call, and copies across all properties as well.
  • Tween.onStartCallback and onCompleteCallback have been removed to avoid confusion. You should use the onStart, onLoop and onComplete events instead.
  • Button.forceOut default value has changed from true to false, so Buttons will revert to an Up state (if set) when pressed and released.
  • The way the collision process callback works has changed significantly and now works as originally intended.
  • The World level quadtree is no longer created, they are now built and ripped down each time you collide a Group, this helps collision accuracy.
  • A SAT system has been integrated for Body collision and separation.
  • Bodies are no longer added to a world quadtree, so have had all of their quadtree properties removed such as skipQuadtree, quadTreeIndex, etc.
  • Body.drag has been removed. Please use the new Body.linearDamping value instead (which is a number value, not a Point object)
  • Body.embedded and Body.wasTouching have been removed as they are no longer required.
  • Body.customSeparateX/Y have been removed as you should now use Body.customSeparateCallback.
  • Body.maxVelocity defaults have been removed from 10,000 to 2000.
  • Body.customSeparateCallback allows you to set your own callback when two Bodies need to separate rather than using the built-in method.
  • Body.collideCallback allows you to set a callback that is fired whenever the Body is hit on any of its active faces.
  • Body.allowCollision has been renamed to Body.checkCollision.
  • Body.rebound is a boolean that controls if a body will exchange velocity on collision. Set to false to allow it to be 'pushed' (see new examples).
  • Removed Body.deltaAbsX and deltaAbsY as they are no longer used internally.
  • Body.screenX and screenY moved to getters, no longer calculated every frame.
  • ArcadePhysics now has setBounds and setBoundsToWorld, and you can specify which walls are created or not (left, right, up, down)
  • Removed: Debug.renderSpriteTouching, Debug.renderLocalTransformInfo, Debug.renderWorldTransformInfo, Debug.renderSpriteCollision and Debug.dumpLinkedList.
  • Body.setSize has been removed. Please use Body.setCircle, setRectangle or setPolygon instead.

New Features

  • Phaser.Timer is now feature complete and fully documented. You can create Phaser.TimerEvents on a Timer and lots of new examples have been provided.
  • Gamepad API support has been added with lots of new examples (thanks Karl Macklin)
  • Phaser.Game constructor can now be passed a single object containing all of your game settings + Stage settings. Useful for advanced configurations.
  • The width/height given to Phaser.Game can now be percentages, i.e. "100%" will set the width to the maximum window innerWidth.
  • Added a stage.fullScreenScaleMode property to determine scaling when fullscreen (thanks oysterCrusher)
  • Added support for margin and spacing around a frame in Loader.spritesheet.
  • Added Device.vibration to check if the Vibration API is available or not.
  • Added Device.trident and Device.trident## Version for testing IE11.
  • Added Device.silk for detecting a Kindle Fire and updated desktop OS check to exclude Kindles (thanks LuckieLordie)
  • TilemapLayers now have debug and debugAlpha values, this turns on the drawing of the collision edges (very handy for debugging, as the name implies!)
  • Tweens have a new event: onLoop.
  • You can now load any binary file via the Loader: game.load.binary(key, url, callback) - the optional callback allows for post-load processing before entering the Cache.
  • Group.set will let you deep set a new propery on a single child of the Group.
  • Stage.display property added. A direct reference to the root Pixi Stage object (very useful for RenderTexture manipulation)
  • Added Ejecta detection to Device (thanks endel)
  • Tweens can now work with relative + and - values. You can do: tween(sprite).to( { x: '+400' }) and it will add 400 to the current sprite.x value.
  • Buttons now properly use their upFrame if set.
  • InputHandler now has snapOffsetX and snapOffsetY properties so your snap grid doesn't have to be 0,0 aligned (thanks srmeier)
  • Loader.progressFloat contains the actual non-rounded progress value, where-as Loader.progress contains a rounded value. Use progressFloat if you've > 100 files to load.
  • Groups can now be added to other Groups as children via group.add() and group.addAt()
  • Groups now have an 'alive' property, which can be useful when iterating through child groups with functions like forEachAlive.
  • Added a new Project Template "Full Screen Mobile" which you can find in the resources folder. Contains html / css / layout needed for a deployed Phaser game.
  • Body.speed - the current speed of the body.
  • Body.angle - the current angle the Body is facing based on its velocity. This is not the same as the Sprite angle that may own the body.
  • Body.linearDamping - This now replaces Body.drag and provides for a much smoother damping (friction) experience.
  • Body.minBounceVelocity - If a Body has bounce set, this threshold controls if it should rebound or not. Use it to stop 'jittering' on bounds/tiles with super-low velocities.
  • QuadTree.populate - you can pass it a Group and it'll automatically insert all of the children ready for inspection.
  • Input.setMoveCallback allows you to set a callback that will be fired each time the activePointer receives a DOM move event.
  • Math.distancePow(x1,y1,x2,y2,power) returns the distance between two coordinates at the given power.
  • Physics.collide now supports the 2nd parameter as an array, for when you want to collide an object against a number of sprites that aren't all in the same Group.
  • Physics.overlap now supports the 2nd parameter as an array, for when you want to overlap test an object against a number of sprites that aren't all in the same Group.
  • Math.reverseAngle - reverses an angle (in radians).
  • Math.normalizeAngle - normalises an angle, now in radians only.
  • Math.normalizeLatitude - Normalizes a latitude to the [-90,90] range.
  • Math.normalizeLongitude - Normalizes a longitude to the [-180,180] range.
  • Phaser.Line added to the geometry classes, with full point on line/segment and intersection tests (see new examples)
  • Phaser.CANVAS_PX_ROUND is a boolean. If 'true' the Canvas renderer will Math.floor() all coordinates before drawImage, stopping pixel interpolation. Defaults to false.
  • Phaser.CANVAS_CLEAR_RECT is a boolean. If 'true' (the default) it will context.clearRect() every frame. If false this is skipped (useful if you know you don't need it)
  • Collision now works between Sprites positioned via sprite.x/y, sprite.body.x/y or sprite.body.velocity.
  • If you are tweening a sprite and still want physics collision, set sprite.body.moves = false otherwise it will fight against the tween motion.
  • Game.enableStep will enable core game loop stepping. When enabled you must call game.step() directly (perhaps via a DOM button?), very useful for debugging!
  • Game.disableStep turns core update loop stepping off.
  • Debug.renderPhysicsBody(body, color) is extremely useful for debugging the new physics bodies. Will draw the outline + points in the color given.
  • Debug.renderBodyInfo(sprite, x, y, color) will display lots of Sprite body data.
  • Sprite.events.onBeginContact will be fired when a Body makes contact with another Body. Once contact is over an onEndContact event will be dispatched.

New Examples

  • Physics - Bounce by Patrick OReilly.
  • Physics - Bounce with gravity by Patrick OReilly.
  • Physics - Bounce accelerator (use the keyboard) by Patrick OReilly.
  • Physics - Bounce knock (use the keyboard) by Patrick OReilly.
  • Physics - Snake (use the keyboard to control the snake like creature) by Patrick OReilly and Richard Davey.
  • Physics - Launcher - Angry Birds style ball launcher demo by Patrick OReilly.
  • Physics - Launcher Follow - throw the sprite anywhere in the world by Patrick OReilly.
  • Physics - Launcher Follow World - an advanced version of the Launcher Follow example by Patrick OReilly.
  • Input - Touch Joystick example showing how to use the clay.io virtual game controller (thanks gabehollombe)
  • Games - Matching Pairs by Patrick OReilly.
  • Games - Simon Says by Patrick OReilly.
  • Tweens - Example showing how to use the tween events, onStart, onLoop and onComplete.
  • Display - Pixi Render Texture. A Phaser conversion of the Pixi.js Render Texture example.
  • Input - 5 new examples showing how to use the Gamepad API (thanks Karl Macklin)
  • Animation - Group Creation, showing how to create animations across all Group children in one call.
  • Particles - Rain by Jens Anders Bakke.
  • Particles - Snow by Jens Anders Bakke.
  • Groups - Nested Groups - showing how to embed one Group into another Group.
  • Time - Lots of new examples showing how to use the updated Phaser.Timer class.

Updates

  • Updated to latest Pixi.js dev branch build (pre 1.4 release)
  • When a Sprite is destroyed any active filters are removed at the same time.
  • Updated Pixi.js so that removing filters now works correctly without breaking the display list.
  • Phaser.Canvas.create updated so it can be given an ID as the 3rd parameter (can also be set via new Game configuration object).
  • Updated display/fullscreen example to reflect new full screen change.
  • Loads of updates to the TypeScript definitions files - games fully compile now and lots of missing classes added :) (thanks Niondir)
  • Removed 'null parent' check from Group constructor. Will parent to game.world only if parent value is undefined.
  • The tutorials have now been translated into Spanish - thanks feiss :)
  • separateY updated to re-implement the 'riding platforms' special condition (thanks cocoademon)
  • SoundManager.onSoundDecode now dispatches the key followed by the sound object, also now dispatched by the Cache when doing an auto-decode on load.
  • Switch method of using trimmed sprites to support scaling and rotation (thanks cocoademon)
  • Most of the GameObjectFactory functions now have a group parameter, so you can do: game.add.sprite(x, y, frame, frameName, group) rather than defaulting to the World group.
  • Group.countLiving and countDead used to return -1 if the Group was empty, but now return 0.
  • Text can now be fixedToCamera, updated world/fixed to camera example to show this.
  • ArcadePhysics.overlap and collide now recognise TileSprites in the collision checks.
  • Lots of documentation fixes in the Tween class.
  • Tweens fire an onLoop event if they are set to repeat. onComplete is now only fired for the final repeat (or never if the repeat is infinite)
  • Pointer used to un-pause a paused game every time it was clicked/touched (this avoided some rogue browser plugins). Now only happens if Stage.disableVisibilityChange is true.
  • Input doesn't set the cursor to default if it's already set to none.
  • You can now collide a group against itself. This will check all children against each other, but not themselves (thanks cocoademon)
  • RenderTexture.render / renderXY has a new parameter: renderHidden, a boolean which will allow you to render Sprites even if their visible is set to false.
  • Added in prototype.constructor definitions to every class (thanks darkoverlordofdata)
  • Group.destroy has a new parameter: destroyChildren (boolean) which will optionally call the destroy method of all Group children.
  • Button.clearFrames method has been added.
  • Device.quirksMode is a boolean that informs you if the page is in strict (false) or quirks (true) mode.
  • Canvas.getOffset now runs a strict/quirks check and uses document.documentElement when calculating scrollTop and scrollLeft to avoid Chrome console warnings.
  • The Time class now has its own Phaser.Timer which you can access through game.time.events. See the new Timer examples to show how to use them.
  • Added StateManager.getCurrentState to return the currently running State object (thanks Niondir)
  • Removed the console.log redirect from Utils as it was messing with Firefox.
  • Body.acceleration is now much smoother and less eratic at high speeds.
  • Removed ArcadePhysics binding to the QuadTree, so it can now be used independantly of the physics system.
  • Removed ArcadePhysics.preUpdate and postUpdate as neither are needed any more.
  • Body.bottom and Body.right are no longer rounded, so will give accurate sub-pixel values.
  • Fixed lots of documentation in the Emitter class.
  • The delta timer value used for physics calculations has had its cap limit modified from 1.0 to 0.05 in line with the core updates.
  • Phaser.Math.min enhanced so you can now pass in either an array of numbers or lots of numbers as parameters to get the lowest.
  • Phaser.Math.max added as the opposite of Math.min.
  • Phaser.Math.minProperty and maxProperty added. Like Math.min/max but can be given a property an an array or list of objects to inspect.
  • Added 'full' paramter to Body.reset, allowing you to control if motion or all data is reset or not.
  • Exposed Group.pivot and Sprite.pivot to allow you to directly set the pivot points for rotation.
  • Swapped to using the native and faster Array.isArray check.
  • Added callback context parameter to Tween.onUpdateCallback(callback, context) to avoid having to bind or create anonymous functions.
  • Updated TweenManager.removeAll so it flags all tweens as pendingDelete rather than nuking the array, to avoid tween callback array size errors (thanks DarkDev)

Bug Fixes

  • Cache.getImageKeys returned __missing in the array, now excluded.
  • Fixed Group.scale so you can now scale a Group directly.
  • Removed World.scale as it was preventing Group.scale from working - you can still scale the world, but you'll need to factor in Input changes yourself.
  • Moved 'dirty' flag for Tilemap to a per-layer flag. Fixes #242
  • Group.length now returns the number of children in the Group regardless of their exists/alive state, or 0 if the Group has no children.
  • Switch Camera.setBoundsToWorld to match world.bounds instead of world (thanks cocoademon)
  • Fixed an issue where passing null as the Group parent wouldn't set it to game.world as it should have (thanks tito100)
  • Fixed Pixi bug (#425) incorrect width property for multi-line BitmapText (thanks jcd-as)
  • Tween.onStart is now called when the tween starts AFTER the delay value, if given (thanks stevenbouma)
  • Sprites that are fixedToCamera can now be input dragged regardless of world position (thanks RafaelOliveira)
  • RenderTexture now displays correctly in Canvas games.
  • Canvas.addToDOM is now more robust when applying the overflowHidden style.
  • Fixed Pixi.StripShader which should stop the weird TileSprite GPU issues some were reporting (thanks GoodboyDigital)
  • Patched desyrel.xml so it doesn't contain any zero width/height characters, as they broke Firefox 25.
  • Cache.addSound now implements a locked attribute (thanks haden)
  • Sound now checks for CocoonJS during playback to avoid readyState clash (thanks haden)
  • Buttons now clear previously set frames correctly if you call setFrames.
  • Sounds will now loop correctly if they are paused and resumed (thanks haden)
  • InputHandler.checkBoundsRect and checkBoundsSprite now take into account if the Sprite is fixedToCamera or not.
  • Removed the frame property from TileSprites as it cannot use them, it tiles the whole image only, not just a section of it.
  • Fixed WebGLRenderer updateGraphics bug (thanks theadam)
  • Removed duplicate Timer.create line (thanks hstolte)
  • Fixed issue with the camera being slightly out of sync with 'fixedToCamera' sprites.
  • 1px camera jitter issue fixed where map is same size, or smaller than the game size.