What's new in WADE 3.7.1 Download this version

What's new in WADE 3.7 Download this version

What's new in WADE 3.6.1 Download this version

What's new in WADE 3.6 Download this version

What's new in WADE 3.5.1 Download this version

What's new in WADE 3.5 Download this version

What's new in WADE 3.4 Download this version

What's new in WADE 3.3.1 Download this version

What's new in WADE 3.3 Download this version

What's new in WADE 3.2.4 Download this version

What's new in WADE 3.2.2 Download this version

What's new in WADE 3.2.1 Download this version

What's new in WADE 3.2 Download this version



What's new in WADE 3.1 Download this version



What's new in WADE 3.0 Download this version


Warning - Breaking changes:



What's new in WADE 2.1.1 Download this version



What's new in WADE 2.1 Download this version



What's new in WADE 2.0 Download this version



What's new in WADE 1.6.1 Download this version

  • Rendering performance improvements (mainly for the 2d canvas-based renderer)
  • Better support for WebAudio on low-spec devices
  • You can now use dataURLs with wade.setAudio()
  • You can pass an existing WebAudio audioContext as an option to wade.init()
  • wade.stopAudio() can be called with no parameters to stop all the audio sources that are currently playing
  • Each layer's resolution factor is taken into account when exporting and importing scenes
  • Added an extra parameter to setImage, setFont, setJson and setAudio, so data can be set and cached for the asset preloader as well as the main asset loader
  • Callbacks for all the loading functions (loadImage, loadFont, etc) are now passed the data that was just loaded, and the name of the file that was loaded
  • wade.setAudio can be passed a callback parameter (useful when the audio data being set is a dataURL of a compressed audio type the needs to be decoded asynchronously)
  • Scene files now support a webAudioOnly flag. Setting it implies that any audio files in the scene will be loaded only where WebAudio is supported
  • BugFix (B153): When calling wade.init wihout having defined App, wade does not start
  • BugFix (B154): When a scene object with pending timeouts is cloned, its timeouts aren't cloned
  • BugFix (B155): SceneObject.schedule() doesn't work on template objects
  • BugFix (B156): Preloading a scene that contains procedural sprites doesn't work
  • BugFix (B157): Cannot import a scene that includes external JSON files
  • BugFix (B158): Trying to load the same audio file multiple times causes a stall
  • BugFix (B159): The callback for wade.playAudio may be executed twice on browsers that support WebAudio
  • BugFix (B160): Input events on overlapping sprites that are on layers with no sorting can be triggered in the wrong order following calls to Sprite.setIndexInLayer()


What's new in WADE 1.6 Download this version

  • This is the first open-source version of WADE: the source code is now included in the WADE zip file.
  • Changed the syntax of wade init. You can now pass in 3 parameters (all optional): the app script, the app data, and an object with intialization options.
  • Sprites can now have drawModifiers - it's a different syntax for setting stacks of draw functions. Easier but limited to the most common types of draw functions (flip, mirror, alpha, blink and fadeOpacity).
  • Added SceneObject.process() to execute member functions for an object and all of its behaviors that have matching function names
  • Added the ability to disable audio and/or input from wade.init
  • Added a debug mode to wade (set from wade.init), that shows scripts in the debugger even for code loaded from JSON (such as Scene and SceneObject data structures).
  • In debug mode, WADE will append sourceURL tags to scripts that don't have them.
  • Added wade.isUsingQuadtree() to check if a layer is using quadtree-based optimizations
  • The quadtree settings for each layer are now taken into account when importing/exporting a scene
  • The default framerate for animations has been changed from 0 to 20
  • Animations are set to autoResize by default
  • wade.addSceneObject() now returns the object that was just added, for convenience (chaining function calls, etc).
  • Gamepad events can be now received by SceneObjects like all other events
  • BugFix (B152): When drawing a sprite to an external canvas with drawToImage(), rotations are ignored


What's new in WADE 1.5.1 Download this version

  • Added support for custom .woff fonts (wade.loadFont(), wade.preloadFont(), and a 'fonts' field in the scene data structure)
  • Added wade.isWebGlSupported() to check for WebGL support
  • Added wade.isKeyDown() to check keyboard states
  • Support for 'lighter' composite operations (aka additive blending) in webgl mode
  • BugFix (B147): On Chrome for Android, converting a 2d layer to webgl at run-time doesn't work
  • BugFix (B148): Chrome for Android is sometimes incorrectly detected as the stock Android browser, thus enabling double-buffering in 2d mode
  • BugFix (B149): In 2d mode, rotating a TextSprite that has been cached doesn't rotate it around its center
  • BugFix (B150): Cloning a SceneObject that contains a TextSprite doesn't work
  • BugFix (B151): Caching a sprite with a rotation and then using Sprite.drawToImage doesn't work as expected


What's new in WADE 1.5 Download this version

  • Brand new WebGL renderer - activate it on each layer with wade.setLayerRenderMode(layerId, 'webgl');
  • You can now cache TextSprites too ( TextSprite.cache() )
  • Added Sprite.getDrawFunction(). This returns the current draw function which, depending on the layer's render mode, could be a gl or canvas draw function.
  • wade.playAudioIfAvailable() now returns the id of the audio source being played (like wade.playAudio() does)
  • Trying to call Sprite.pushToBack(), Sprite.bringToFront() or Sprite.putBehindSprite() when the sprite is not in the scene now outputs an error message in the console rather than failing silently
  • Added Animation.getRelativeImageName()
  • BugFix (B133): When a sprite with an active animation is serialized, the image field contains the image from the animation rather than the last static image that was used
  • BugFix (B134): Animation.setFrameNumber() doesn't trigger a redraw of the parent sprite
  • BugFix (B135): Calling putBehindSprite() on a TextSprite causes an error
  • BugFix (B136): TextSprite.setOutline() doesn't trigger a redraw of the text sprite
  • BugFix (B137): TextSprite.drawToImage() doesn't work properly for text sprites that aren't center-aligned
  • BugFix (B138): Sprites with active animations trigger a redraw of their area even if they aren't in the scene
  • BugFix (B139): Sprites drawn with a grid_ draw function are always visible even when they are set to invisible
  • BugFix (B140): Sprites drawn with a boundingBox_ draw function are always visible even when they are set to invisible
  • BugFix (B141): wade.deleteCanvases() doesn't work when double buffering is enabled
  • BugFix (B142): image smoothing settings don't work in IE10 and IE9
  • BugFix (B143): changing image smoothing settings at run-time doesn't work if double-buffering is not enabled
  • BugFix (B144): creating an empty sprite, setting its size, then adding an animation doesn't automatically play the animation
  • BugFix (B145): Animations that have an offset render outside the parent sprite's bounding box, causing visual artifacts
  • BugFix (B146): Concatenating fadeOpacity and resizeOverTime draw functions doesn't work when the time values used for different functions are different


What's new in WADE 1.4.3 Download this version

  • Added wade.preloadScene() to load a scene asynchronously while another scene is active
  • SceneObjects can now be flagged as templates. A template is a scene object that never receives any events, and is set to be invisible as soon as it's added to the scene
  • wade.importScene has an additional (optional) parameter for asynchronous loading
  • wade.loadScene and wade.importScene have an additional optional parameter for clearing the previous scene automatically before creating the new one
  • When serializing behaviors without a name parameter, the name can be inferred automatically if the behavior is a global function
  • Behaviors that don't have a 'serialize' function are now serialized automatically
  • Added an 'orientation' parameter to the scene data structure
  • Added wade.getWindowMode() to retrieve the current window mode
  • Layer translate and scale factors are exported and imported as part of a scene
  • Added wade.defaultLayer, which is the layer number that new sprites will use when they are created without specifying a layer id
  • minScreenSize, maxScreenSize, orientation and windowMode are now automatically exported as part of the scene data structure
  • BugFix (B129): wade.setSceneObjectIndex() causes an error
  • BugFix (B130): Sprite.setIndexInLayer() doesn't trigger a redraw of the sprite
  • BugFix (B131): Properties, behaviors and functions of a scene object are sometimes categorized incorrectly when serializing
  • BugFix (B132): Behavior properties are ignored when constructing Scene Objects with object-style constructors


What's new in WADE 1.4.2 Download this version

  • Added onBlur and onFocus events
  • The scene data structure has a new 'scripts' parameter to load and execute scripts when a scene is loaded
  • Added minScreenSize, maxScreenSize and windowMode to the scene data structure
  • BugFix (B125): If animations are played before adding an object to the scene, the object's animation count can be wrong
  • BugFix (B126): Scenes that have SceneObjects with no images but have some external audio files fail to load with wade.loadScene()
  • BugFix (B127): WADE cannot start on Safari for Windows if Apple QuickTime is not installed
  • BugFix (B128): wade.blacklistReferrers and wade.whitelistReferrers don't work on some versions of Safari


What's new in WADE 1.4.1 Download this version

  • Added 'inPlace' versions of vector functions (wade.vec2.addInPlace, wade.vec2.rotateInPlace, etc).
  • Added an option to SceneObject.serialize() to serialize all the object's member functions.
  • Added an option to wade.exportScene() to export all member functions of scene objects
  • When creating a SceneObject with an object-style constructor, you can have a 'functions' field that contains string representations of the objects' member functions
  • wade.exportScene() can take an optional parameter to specify which SceneObjects should not be exported
  • Added Sprite.getIndexInLayer() and Sprite.setIndexInLayer() for finer dynamic control over the draw order of each sprite
  • Added wade.getSceneObjectIndex() and wade.setSceneObjectIndex() for finer dynamic control over the export order of scene objects
  • Added wade.setJson()
  • Added a 'dontExecute' option to wade.loadScipt() and wade.preloadScript()
  • Added wade.getScript() and wade.setScript()
  • Added wade.setSwipeTolerance() for better control over swipe gesture detection
  • BugFix (B119): When a SceneObject is serialized after receiving input events, its custom properties contain the last event response data
  • BugFix (B120): When creating a SceneObject with an object-style constructor, the horizontal alignment value is used for vertical alignment
  • BugFix (B121): When rotating a scene object made of multiple sprites, sprite offsets aren't automatically rotated
  • BugFix (B122): Even if wade.init() is called multiple times, App.init() is only ever called once
  • BugFix (B123): Using the boundingBox_ draw function causes a memory leak
  • BugFix (B124): If using an object-style constructor for Sprites, the scale factor is not set correctly


What's new in WADE 1.4 Download this version

View the newsletter about these changes

  • Added wade.setLayer3DTransform(), supporting animated transitions on desktop browsers and some mobile browsers
  • Added wade.preventIframe() to prevent the WADE App from being displayed in an iframe
  • Added wade.siteLock() to lock the WADE App to a specific domain
  • Added wade.blacklistReferrers() to prevent the WADE App from being linked from selected domains
  • Added wade.whitelistReferrers() to only allow selected domains to link to the WADE App
  • Added wade.getHostName() to get the host name from a URL string
  • Added wade.removeLayer() to delete existing layers and free memory
  • Every canvas element now has a sensible id property
  • New onContainerResize event is fired when the container window's size changes (even if the app's screen size doesn't change)
  • Performance improvements
  • Default FPS is now 60
  • You can now get and set names for Sprites and TextSprites
  • Added Sprite.getAnimation() to get Animation objects based on animation names
  • Added wade.skipMissedFrames() to avoid trying to catch up on any lag that's built up to the current point
  • BugFix (B110): When a SceneObject has multiple sprites, SceneObject.getOverlappingObjects() may return an array that contains duplicate entries
  • BugFix (B111): Some debug text may appear in the console window when calling SceneObject.rotateTo()
  • BugFix (B112): Adding or removing scene objects when the simulation is paused doesn't trigger a redraw
  • BugFix (B113): A canvas for layer 1 is always being created even if layer 1 is never used (it uses memory unnecessarily)
  • BugFix (B114): Using wade.forceOrientation() results in the app being rotated upside-down on mobiles
  • BugFix (B115): wade.screenCapture() and wade.drawLayerToImage() don't work properly when layers have resolution factors other than 1
  • BugFix (B116): Timing is inconsistent, for example moving an object by 1000 pixels at 1000 pixels per second doesn't take a second
  • BugFix (B117): TextSprite.cache() causes an error
  • BugFix (B118): It isn't possible to use the built-in procedural images after setting a base path for the WADE App

Warning - If upgrading an existing project from previous versions of WADE, please read this note!



What's new in WADE 1.3.3 Download this version

  • Several performance optimizations
  • Behavior properties that can be serialized are serialized automatically when the parent scene object is serialized
  • Added the minimal-ui tag to the default index.html (for iOS devices)
  • BugFix (B109): The dontPlay parameter of Sprite.addAnimation() is ignored


What's new in WADE 1.3.2 Download this version

  • Added wade.setCatchUpBuffer and getCatchUpBuffer to control how WADE should handle lag and missed frames
  • Reverted default frame rate back to 30fps to ensure backwards compatibility (it can still be changed manually for new projects)
  • BugFix (B108): Performance-related bug introduced with the previous release


What's new in WADE 1.3.1 Download this version

  • Added a small set of built-in procecedural images (circle, square, star, fadingCircle)
  • Changed the default framerate to 60fps
  • Added TextSprite.setFixedSize() that can be used as an optimization to avoid recalculating a bounding box when the text changes
  • Added functions to convert between screen space values and canvas space values (in addition to screen space conversions)
  • You can now disable quadtrees on individual layers (can be useful as an optimization sometimes)
  • Added wade.pauseSimulation() and wade.resumeSimulation()
  • onMouseUp events are now fired even when they occur outside the App area
  • Improved main loop alogrithm doesn't try to catch up with any lag when the app is too unresponsive (e.g. it's in a background tab)
  • BugFix (B105): Calling SceneObject.serialize() on an object with no behaviors may fail in Chrome
  • BugFix (B106): wade.screenDirectionToWorld() returns a wrong result for layers with scale and translation
  • BugFix (B107): wade.worldPositionToScreen(), worldDirectionToScreen(), etc return unexpected results for layers with resolution factors other than 1


What's new in WADE 1.3 Download this version

View the newsletter about these changes

  • Added wade.loadScene() and wade.importScene() to load a scene from a JSON file
  • Added wade.exportScene() to export the current scene
  • Added SceneObject.serialize(), Sprite.serialize(), TextSprite.serialize() and Animation.serialize()
  • SceneObjects, Sprites, TextSprites and Animations can now be constructed with a single data object (that you can get through their serialize functions)
  • Sprite.cache() to draw a sprite to an off-screen canvas and start using that canvas to draw the sprite afterwards
  • Added wade.fadeInLayer() and wade.fadeOutLayer() that make use of hardware-accelerated CSS
  • Added Animation.setFrameNumber(), Animation.getFrameNumber() and Animation.getNumFrames()
  • You can pass an additional callback parameter to wade.moveCamera() if you want to execute a custom function when the camera finishes moving
  • For SceneObjects that have a name, you can pass their names to wade.removeSceneObject()
  • It is now possible to manually clear individual layers with wade.clearCanvas()
  • It is now possible to manually draw individual layers (or the whole scene) with wade.draw()
  • Added wade.getJson() to directly access JSON data that was loaded via wade.loadJson()
  • SceneObject.getSpriteIndex() to retrieve the current index of a sprite
  • SceneObject.addSprite() accepts an additional parameter to insert a sprite at a specific index
  • Passing an animation name to Sprite.addAnimation() is now optional
  • Removed Sprite.getActiveImageName which was the same as using Sprite.getImageName()
  • BugFix (B99): Some debug text appears in the console on touch move events
  • BugFix (B100): wade.getLayerOpacity() doesn't return correct numbers
  • BugFix (B101): touch events don't work correctly in desktop versions of Chrome (e.g. on a touch screen laptop)
  • BugFix (B102): after cloning a sprite with a rotation, collisions with the cloned sprite don't work correctly
  • BugFix (B103): automatic texture streaming doesn't work when multiple sprites use the same streamed texture
  • BugFix (B104): modifying a source image doesn't update spritesheet animations using that image


What's new in WADE 1.2 Download this version

View the newsletter about these changes

  • Automaitc image streaming: creating a sprite with an image that hasn't been loaded will automatically trigger the background loading of that image, which will then be used by the sprite as soon as it's loaded.
  • You can now pass an errorMessage parameter to wade.getImage(), to log a custom message when trying to access an image that hasn't been loaded
  • You can now access the main canvas object being used by each layer
  • You can draw individual layers to in-memory images (so you can create sprites with them)
  • Added wade.screenCapture() to draw the contents of the screen to an image
  • It is now possible to control the CSS opacity of each layer
  • Added onSwipeLeft, onSwipeRight, onSwipeUp, onSwipeDown input events
  • You can pass an extra parameter to wade.init if you want to use a container for the App that has a name different than the default 'wade_main_div'
  • BugFix (B93): The onUpdate event doesn't fire anymore
  • BugFix (B94): The transparent_ drawFunction is no longer available
  • BugFix (B95): Memory leak when unloading images that are used by sprites that are not in the scene
  • BugFix (B96): Apps using the 'container' window mode don't receive onResize events
  • BugFix (B97): Using Sprite.drawToImage with a custom offset or transform may change the position of the original sprite in the scene
  • BugFix (B98): Touchmove events don't work properly in Chrome for Android


What's new in WADE 1.1.3 Download this version

  • New window mode ('container') can be used to force the game canvases to always match the size and position of the containing div (wade_main_div)
  • Failing to load resources after multiple attempts doesn't stop the app anymore
  • Added wade.forEachPixel() to easily perform per-pixel operations on images
  • wade.log is the function that is now used to log messages from wade. It defaults to console.log, but it can be overridden.
  • Added wade.forceRedraw() to force a full redraw of the scene (or of a single layer)
  • Added support for absolute paths for loading local files (such as C:\filename) where the browser allows it (most browsers don't unless you explicitly give them access).
  • The callback of wade.loadJson is now passed a parameter that contains the JSON data that has been loaded (if the loading succeeded)
  • Added wade.restartInputEvent() that you can call after wade.stopInputEvents()
  • Added wade.cancelInputEvents() so you can control whether you want to cancel and stop the propagation of input events captured by WADE
  • Added Sprite.getActiveImageName() to get the name of the image currently being used by the sprite or its active animation
  • BugFix (B89) wade.deleteCanvases() doesn't work anymore
  • BugFix (B90) wade.getLayerDataURL() doesn't work
  • BugFix (B91) Sprite.getImageName() and Animation.getImageName() do not take the base path into account (they always return names with relative paths)
  • BugFix (B92) Updating an image with setImage or putImageData doesn't trigger a redraw of sprites using that image


What's new in WADE 1.1.2 Download this version

  • Added wade.getImageDataURL method to generate a data URL from an image
  • Added wade.getLayerDataURL method to generate a data URL from a game layer
  • wade.getRelativeAppPath has been renamed to wade.getBasePath
  • Added wade.setBasePath to change the base path of the app (file names used in wade.loadImage, wade.loadAudio, wade.getImage, etc. will be relative to this base path)
  • Passing a 'destinations' parameter to wade.unpackSpriteSheet is now optional
  • BugFix (B87): canvases that are created after the game is started don't have the correct size
  • BugFix (B88): when the window mode is set to 'none', the position of the game canvases isn't always consistent


What's new in WADE 1.1.1 Download this version

  • New onUpdate event that is fired on every simulation step
  • Added a transparent_() draw function
  • BugFix (B84): when using wade.playAudio() without a callback, an error is shown in the console
  • BugFix (B85): wade.setFullScreen(false) to exit full screen mode doesn't work
  • BugFix (B86): when the window mode is set to 'none', the coordinates of mouse events are wrong


What's new in WADE 1.1 Download this version

View the newsletter about these changes

  • Added support for gamepads
  • You can omit the 'start' parameter in PlayAudioSegment to play the sound from the beginning
  • You can omit the 'end' parameter in PlayAudioSegmet to play the sound until the end of the source file
  • playAudioSegment now returns the uid of the sound that is being played, so you can stop it with wade.stopAudio()
  • Added an onRotationComplete event for Scene Objects
  • You can now get all the SceneObjects with a given property/value pair
  • "Loading images" can be clicked to open a URL in a new window
  • You can now show a loading progress bar using wade.setLoadingBar()
  • 2d vector maths (new wade.vec2 module)
  • Added wade.loadImages to load multiple images in a single function call
  • Double buffering is enabled by default for the android browser
  • You can now pass a callback argument to playAudio and playAudioIfAvailable
  • Added SceneObject.removeBehaviorByIndex
  • Added wade.isEventListener to check if a Scene Object is currently listening for an event
  • Added SceneObject.listenFor() as a shorthand alternative to wade.addEventListener
  • Added SceneObject.stopListeningFor() as a shorthand alternative to wade.removeEventListener
  • Added SceneObject.isListeningFor() as a shorthand alternative to wade.isEventListener
  • BugFix (B79) wade.setWindowMode('none') doesn't work anymore
  • BugFix (B80) SceneObject.rotateTo() doesn't work with negative angular velocities
  • BugFix (B81) The callback passed to wade.playAudioSegment() isn't always executed in Chrome
  • BugFix (B82) SceneObject.removeBehavior doesn't work
  • BugFix (B83) Mouse events on TextSprites that aren't center-aligned or that have with multiple lines are inaccurate


What's new in WADE 1.0.3 Download this version

  • Added Sprite.getScaleFactor() to get the size of the sprite relative to its source image (or animation frame)
  • Added Animation.getFrameSize() to get the size of a single animation frame
  • Animations now support autoResizing (resizing the parent sprite to fit the animation frame size, preserving its scale factor)
  • Animations support an offset to be added to the parent sprite's position when playing
  • BugFix (B77) wade.setSmoothing() doesn't work on layers with static objects only
  • BugFix (B78) Animation.getImageSize() doesn't return the size of the whole spritesheet, but of a single animation frame


What's new in WADE 1.0.2 Download this version

  • Added SceneObject.stopAnimation() and SceneObject.resumeAnimation()
  • A behavior's clone() function now receives a reference to the new object
  • You can pass an extra parameter to wade.addSceneObject, containing data that will be passed to the onAddToScene event
  • Adding an animation to an empty sprite whose size hasn't been set will now resize the sprite automatically
  • You can now retrieve a scene object's behavior using the behavior index
  • It is now possible to put a sprite behind another sprite on the same layer with Sprite.putBehindSprite()
  • added wade.stopAudio() to stop playing audio files
  • wade.playAudio now returns a UID for the audio source, which you can then pass to wade.stopAudio()
  • Bug Fix (B75): Animation blending with semi-transparent sprites doesn't work correctly
  • Bug Fix (B76): When WADE is stopped (with wade.stop()), loading images aren't removed from the document's body.


What's new in WADE 1.0.1 Download this version

  • When SceneObjects are cloned, behaviors are cloned using their clone function when present
  • wade.getVersion() to check the current version of WADE
  • wade.requireVersion() to check it the current version of WADE is greater or equal than a required version
  • Bug Fix (B73): Sprites using gradients that don't move aren't rendered correctly when there are moving objects overlapping them on the same layer
  • Bug Fix (B74): Re-adding a named scene obejct to the scene in a different position after it's been removed causes problems


What's new in WADE 1.0 Download this version

View the newsletter about these changes

  • Named scene objects.
  • Added wade.getImageData() and wade.putImageData().
  • Handling of Tizen-specific requirements.
  • Disabled the right-click context menu in WADE apps.
  • Added wade.recreateCanvases() to complement wade.deleteCanvases().
  • Added device orientation events.
  • Added device motion events.
  • Added a parameter to wade.addSceneObject to auto-listen for handled events.
  • SceneObject.getBehaviors() to get a list of all the behaviors of an object.
  • TextSprite.scaleBounds() to manually adjust the bounding box of text sprites.
  • Added wade.getSceneObjects() to get all the objects in the scene.
  • Support for multi touch.
  • Reduced memory usage.
  • Bug Fix (B63): overlap tests don't work with TextSprites
  • Bug Fix (B64): SceneObject.clone() doesn't work on objects with no behavior
  • Bug Fix (B65): when loading a cached script without the forceReload option WADE doesn't execute the script
  • Bug Fix (B66): input events fire even when they happen outside the app's screen area
  • Bug Fix (B67): moving vector graphics objects can have rendering artifacts around their edges
  • Bug Fix (B68): vector graphics functions ignore the sprite's rotation
  • Bug Fix (B69): when sprites have invalid coordinates (such as NaN), WADE gets stuck in an infinite loop
  • Bug Fix (B70): rotated text sprites don't update their bounding boxes correctly
  • Bug Fix (B71): the bounding box of text sprites is often too big
  • Bug Fix (B72): overlapping objects on the same layer receive input events in the wrong order

Warning - When upgrading from previous versions of WADE, make sure that you update index.html and style.css as well as the javascript file, or your app won't work!



What's new in WADE 0.9.2 Download this version

View the newsletter about these changes

  • Added draw functions for HTML5 composite operations.
  • Get scene objects or sprites in a specific area.
  • Get overlapping objects.
  • Set and get the angular velocity of scene objects.
  • Added a rotateTo() function to scene objects.
  • Angular sprite offsets.
  • OrientedBox vs orientedBox intersection test.
  • OrientedBox vs box intersection test.
  • OrientedBox contains point test.
  • Added a getTargetRotation() function to scene objects.
  • Get the parent scene object of a sprite with sprite.getSceneObject().
  • Custom events for scene objects.
  • Scheduled events for scene objects.
  • Added an isAppInitialized() function to check whether the init function has been executed.
  • Bounding box draw function for debugging.
  • Major performance improvements.
  • Bug Fix (B57): Calling wade.isMouseDown() from an onMouseDown function returns false.
  • Bug Fix (B58): The opacity of animations with blending isn't constant on Chrome and Firefox.
  • Bug Fix (B59): Using the flip_ draw function without any arguments doesn't work (although mirror_ does).
  • Bug Fix (B60): Input events can fire before App.init() has been executed.
  • Bug Fix (B61): Making sprites larger without moving them may sometimes cause rendering artifacts.
  • Bug Fix (B62): Mouse events on rotated objects can be imprecise.

Warning - Breaking changes:

  • SceneObject.updateSpriteOffset() has been removed - use SceneObject.setSpriteOffset() instead, it does the same thing.


What's new in WADE 0.9.1 Download this version

View the newsletter about these changes

  • Added draw functions to mirror and flip sprites.
  • Added upport for multiple main loop callbacks.
  • Added a wade.moveCamera() function to handle camera movement.
  • Added support for the camera tracking a scene object.
  • Added an onCameraMoveComplete event.
  • Bug Fix (B54): The setRotation() method doesn't work for TextSprites.
  • Bug Fix (B55): Calling setRotation() on a static object doesn't cause it to redraw.
  • Bug Fix (B56): The position of input events is wrong on layers with a resolution factor other than 1.


What's new in WADE 0.9 Download this version

View the newsletter about these changes

  • Rewritten audio system, using the WebAudio API where available.
  • Added support for animation blending.
  • Added the ability to stop and resume animations.
  • Added the ability to force landscape or portrait orientation.
  • Added an onMouseIn event.
  • Added an onMouseOut event.
  • Get the screen position of the last mouse or input event.
  • Bug Fix (B49): The first frame of animations played in reverse is always the start frame.
  • Bug Fix (B50): The first frame of animation lasts half the time of the other frames.
  • Bug Fix (B51): Moving or resizing a sprite that is using a gradientFill_ draw doesn't update the gradient.
  • Bug Fix (B52): Resizing a sprite that is using a radialGradientCircle_ draw doesn't update the gradient.
  • Bug Fix (B53): The first color in a radial gradient uses more space than the other colors.

Warning - Breaking changes:

  • wade.getAudio() is now deprecated. Previously it used to return an HTML5 Audio element - now it may return a WebAudio buffer if the WebAudio API is supported. Please use wade.playAudio() and wade.playAudioSegment() to play sounds.


What's new in WADE 0.8.3 Download this version

View the newsletter about these changes

  • Play animations in reverse.
  • Play animations in ping-pong mode (forward first, then reverse).
  • Control image smoothing (for the whole app, or per layer).
  • Clone scene objects, sprites and animations.
  • Cross-platform onClick event.
  • Added the ability to set a movement tolerance for click events.
  • Clear the scene with a single command.
  • Added support for unloading sounds.
  • Unload all sounds at once.
  • Unload all images at once.
  • Added a global "onResize" event.
  • Bug Fix (B47): calling wade.isMouseDown() from an onMouseUp event returns true.
  • Bug Fix (B48): wade.setMinScreenSize() and wade.setMaxScreenSize() don't have an immediate effect on wade.getScreenWidth() and wade.getScreenHeight().


What's new in WADE 0.8.2 Download this version

View the newsletter about these changes

  • Predefined draw functions for vector graphics, including gradients and borders.
  • Predefined draw functions to control sprite opacity.
  • Predefined draw functions to control sprite resizing.
  • Added the ability to concatenate draw functions.


What's new in WADE 0.8.1 Download this version

View the newsletter about these changes

  • Set a rotation angle for scene objects and individual sprites
  • Set a global resolution factor
  • Set resolution factors for individual layers
  • Support for fullscreen API
  • Sprite.drawToImage() can be called with user-defined transforms and composite operations
  • Rendering performance improvements
  • You can pass a resolution factor to wade.createCanvas(), if you want to apply some CSS scaling to it
  • Passing an object to store the result of wade.loadJson() and wade.preloadJson() is now optional
  • Passing null to wade.removeSceneObject() doesn't cause an error anymore
  • Bug Fix (B42): 'default' animations do not trigger an onAnimation start event when played
  • Bug Fix (B43): playAnimation() doesn't set a dirty area when the animation is made of a single frame
  • Bug Fix (B44): unable to re-load images that have been unloaded
  • Bug Fix (B45): adding an offset when calling Sprite.drawToImage() doesn't have any effect
  • Bug Fix (B46): sprite animations playing at 30fps often skip one frame


What's new in WADE 0.8 Download this version

  • Drawing to offscreen canvases and HTML images
  • Better support for resizing, with automatic scaling via css when exceeding the resolution limits
  • Loading error callbacks (+timeouts to test connectivity)
  • Global event listeners
  • Unpacking sprite sheets
  • Touch support for IE10 and Windows Phone 8
  • Keyboard events
  • Text outlines
  • Support for local storage
  • Support for offline application cache
  • Unloading images to free memory
  • Change text alignment at run-time
  • Retrieve and measure single lines in a text sprite
  • Query the state of mouse or touch input
  • Change sprite layers at run-time
  • Explicitly control double buffering
  • Optimized the drawing of non-animated sprites
  • Changed mouse wheel events to include position information
  • Absolute screen position for mouse events
  • Control caching of the main app script
  • Can set dirty areas in custom draw calls
  • Added 'wade.cloneArray' utility function
  • Support for more transport protocols, not just http
  • Fixed input problems with Firefox on touchscreen devices
  • Fixed rendering problems in Android stock browser
  • Fixed mouse wheel -> pinch zoom mapping
  • Fixed the API for screen to world transforms
  • Fixed bug with audio files that are not in the root directory
  • Fixed bug loading the same json file multiple times
  • Fixed bug setting "loading images" multiple times

Warning - Breaking changes:

  • event data for mouse events now contains screenPosition.x and screenPosition.y rather than x and y