Version NEXT [Not Released]
CRITICAL (may break existing content):
- Codebase ported to ES6 and transpiled to ES5 with Babel. Multiple build formats are provided (global, CommonJS, ES6).
OTHER:
- Build process converted from Grunt to Gulp
- Build process and shared files (Event, EventDispatcher, Ticker) moved to external repository which is a devDependency of this one.
- WebGL is no longer a plugin, it has been fully integrated. WebGL will be leveraged by BitmapCache if support is found.
Version 0.8.2 [November 26, 2015]
CRITICAL (may break existing content):
- MovieClip has been added to the minified EaselJS source. The movieclip minified script has been removed.
OTHER:
- fixed compositeOperation value in DisplayProps.setValues (thanks @fumio)
- documentation updates
- upgraded tutorials to the latest EaselJS version, including content updates
- fixed the SpriteSheetBuilder to support both SpriteSheet framerate and speed (instead of frequency)
- fixed ignoreScale support in Graphic StrokeStyle command
- bower updates: Removed bower.json from excludes
- updated ScaleBitmap extra to the new extend/promote approach
- changed SpriteSheet Array checks from instanceof to Array.isArray()
- added StrokeDash support to SVGExporter
- fixed issue with SVGExporter when the first lineTo has a zero-value for x or y
- added image error handling to SpriteSheet
- Grunt updates: Added shortcut "next" task
Version 0.8.1 [May 21, 2015]
CRITICAL (may break existing content):
- Graphics.command now returns null after empty fill / stroke calls.
- dispatchEvent now returns false instead of true to indicate an event had preventDefault called (DOM level 2 compatibility)
- cursor is now inherited properly (cursors on children override parents)
OTHER:
- added Graphics.StrokeDash and Graphics.setStrokeDash()
- Graphics no longer appends redundant StrokeStyle commands
- fixed an issue with preventDefault not working with drawstart and tickstart events
- added bubbles and cancelable params to EventDispatcher.dispatchEvent()
- reintroduced Sprite.initialize() for now, to support FlashCC spritesheet export
- fixed an issue with stroke dash not being reset properly on Graphics.clear()
- bitmap fills no longer throw RTEs when targeting an unloaded image
- Sprite constructor now accepts 0 as frameOrAnimation param
- added MouseEvent.relatedTarget
- improved handling of Bitmap load errors
- fixed Rectangle.pad
- fixed issues with buttons playing on reset
- added totalframes property and getDuration method to MovieClip
Version 0.8.0 [December 12, 2014]
CRITICAL (may break existing content):
- modified behaviour of SpriteSheetBuilder.addFrame setupFunction, setupParams & setupScope params
- removed the deprecated mousemove & mouseup events on MouseEvent
- removed Graphics.inject() in favour of Graphics.append()
- Sprite now properly displays the first frame of animations after calling gotoAndPlay() (thanks MannyC)
- Moved Ticker into the "createjs" package since it will be included with TweenJS in future releases.
- re-architected the class and inheritance model
- initialize methods removed, use MySuperClass_constructor instead
- helper methods: extend & promote (see the "Utility Methods" docs)
- property definitions are now instance level, and in the constructor (performance gains)
- the .constructor is now set correctly on all classes (thanks kaesve)
- renamed initialize on geom classes to "setValues()"
- removed secondary properties (visible, alpha, compositeOperation, shadow) and related functionality from Matrix2D
- added DisplayProps to hold these properties + a matrix instance
- Matrix2D was updated to be internally consistent with regards to matrix orientation
- Matrix2D transform methods (ex. translate, rotate) now behave as append instead of prepend operations
- renamed ColorMatrix.copyMatrix() to .copy() to reflect geom classes
DEPRECATED (will be removed in a future version):
- Container.getNumChildren() in favour of Container.numChildren
- DisplayObject.getStage() in favour of DisplayObject.stage
- Graphics.getInstructions() in favour of Graphics.instructions
- MovieClip.getLabels() in favour of MovieClip.labels
- MovieClip.getCurrentLabel() in favour of MovieClip.currentLabel
- SpriteSheet.getAnimations() in favour of SpriteSheet.animations
- Ticker.getInterval() in favour of Ticker.interval
- Ticker.getFPS() in favour of Ticker.framerate
- Ticker.getPaused() / setPaused() in favour of Ticker.paused
PERFORMANCE:
- added performance tests to extras
- significant performance improvements:
- vector graphics (especially in Graphics instances with large numbers of instructions)
- filters (thanks pfirpfel & quasimondo) (~2-4x faster)
- overall display list performance (~2x faster)
- display object property access (~2x faster)
- tick event propagation (~3x faster)
OTHER:
- replaced a number of get/set methods with getter / setters. See the DEPRECATED section above for a list.
- added setupFunction, setupData, labelFunction to SpriteSheetBuilder.addMovieClip
- added SpriteStage & SpriteContainer for WebGL rendering
- changes to how BitmapText works to support WebGL
- added WebGL examples
- added .visible to Matrix2D for use by DOMElement
- updates to how DisplayObject.snapToPixel & Stage.snapToPixelEnabled interact
- major improvements to Stage.nextStage to better handle layered canvases
- ButtonHelper now sets mouseChildren to false, and reverts to default cursor when disabled
- fixed issue introduced in 0.7.1 where getObjectsUnderPoint ignore elements without mouse listeners
- doc updates
- fixed example formatting in docs
- simplified handling of custom data passed into Stage.update()
- display object tick events will now include delta, time, paused, and runTime properties if a Ticker tick event object is passed as the first param to Stage.update()
- added Stage.tick()
- added Event.set()
- added MovieClip.framerate and support for time based movieclips
- Added Bower support, including grunt task for automatically updating bower.json
- fixed an issue with Ticker.reset()
- Ticker.getTime()/getEventTime() now return -1 if the Ticker has not been initialized
- preventDefault support added to the tickstart and drawstart events
- added Stage.drawRect to support selective rendering
- major rewrite of Graphics to use specific command objects
- added Graphics.getInstructions()
- added Text.getMetrics()
- fix for Text.getMeasuredWidth() when no font or an invalid font is specified
- fix for spritesheets that included 0 width/height frames
- the CreateJS CDN now supports https / SSL
- improved how Sprite handles sequencing between animations with different speed values
- added "change" event to Sprite
- added "added" and "removed" events to DisplayObject
- added the extras folder, with: SVGExport, Context2DLog, and PerformanceTests
- added Graphics.store() / unstore()
- examples now all use the combined lib
- SpriteSheet.getNumFrames() now returns 0 instead of null if images are not loaded.
- added some initial unit tests for the library
- added helper methods to Rectangle: union, intersects, extend, intersection, pad, isEmpty, & contains.
- updated clone() method for all classes
- added Matrix2D.equals() method
- added DisplayObject.transformMatrix
- mouse interactions and getObjectsUnderPoint now respect masks
- added a mode param to getObjectsUnderPoint() to respect mouseEnabled/mouseChildren and event listeners
- added Stage.preventSelection to block accidental selection of document elements
- added
pt
param to DisplayObject.localToGlobal, globalToLocal, and localToLocal methods - BlurFilter provides higher quality results (thanks quasimondo)
- added MouseEvent.isTouch
- added support for margin and spacing in sprite sheet data (thanks renatopp)
Version 0.7.1 [December 12, 2013]
- fixed issue with mouseChildren not working with nested Containers
- fixed issue where first call to Ticker.addEventListener() did not return the listener
- added DisplayObject.tickEnabled & Container.tickChildren
- fixed an issue related to modal dialogs and pointer position for mouse down
- fixed an issue when calling gotoAndStop(animation) in the animationend event stack for the same animation
- ColorMatrix no longer extends Array
- fixed ColorMatrix.toArray(), .concat(), and .clone()
- changed dblclick to use a canvas listener instead of global listener
- added MouseEvent.localX/Y
- fixed touch/multitouch in IE11
- fixed issue with -1 mouse pointers (thanks cubica)
- fixed issue with AlphaMapFilter (thanks Dave)
- added willTrigger() to EventDispatcher
- modified mouse event flow so items with no listeners are not checked for a hitTest.
- avoids unnecessary cross-domain issues introduced in EaselJS 0.7.0, when loaded images don't have any mouse listeners on them.
- getObjectsUnderPoint() and getObjectUnderPoint() now account for hitAreas
Version 0.7.0 [September 25, 2013]
CRITICAL (may break existing content):
- removed all onEvent handlers (ex. onClick, onTick, onAnimationEnd, etc)
- removed Ticker.addListener and .removeListener
- most mouse events now bubble
- BitmapAnimation renamed to Sprite
- MouseEvent now inherits from new Event class
- sprite sheet data's animation .frequency property removed in favour of .speed
- removed "target" from MouseEvent's param list
- returning false from an event handler no longer causes dispatchEvent to return false, see Event.preventDefault
- Added "use strict"; to everything.
- renamed BoxBlurFilter to BlurFilter
DEPRECATED (will be removed in a future version):
- MouseEvent mousemove/mouseup events, see DisplayObject pressmove/pressup
- SpriteSheetUtils.flip()
- SpriteSheetUtils.mergeAlpha()
OTHER:
- implemented createjs Utils
- implemented "use strict" mode
- BitmapAnimation renamed to Sprite
- renamed the "frequency" property in sprite sheet data to "speed" and changed functionality:
- support for non-integer values
- inverted outcome vs frequency. Ex. a "speed" value of 2 doubles playback speed, 0.5 halves it
- added Sprite.framerate and SpriteSheet.framerate
- added frameOrAnimation param to Sprite constructor
- deprecated Sprite.offset (no longer functional)
- added Ticker.timingMode and deprecated Ticker.useRAF
- added Ticker.TIMEOUT, Ticker.RAF, Ticker.RAF_SYNCHED timing mode constants
- added Ticker.getMeasuredTickTime()
- Ticker now does not automatically init until a listener is added to it
- added Ticker.reset()
- added Stage.nextStage to relay interaction events
- added Graphics.inject()
- added Text.getMeasuredHeight()
- fixes and improvements to Touch support
- fixed setChildIndex when adding to an index lower than the item exists at already.
- added Graphics.Command
- merged lots of doc updates (thanks @peteshand)
- lots of doc, example, & tutorial updates
- included MouseEvent.nativeEvent for mouseover/out events
- added rollover / rollout events to DisplayObject
- prevented mouseover/out and rollover/out events from triggering if the mouse is not over the canvas
- ex. within a scrolling div or DOM element layered over top
- added pressmove / pressup events to DisplayObject
- added Matrix2D.transformPoint() method
- fixed an issue when adding the same listener to an event twice
- added Event class, used by all events
- MouseEvent inherits from new Event class
- added .on and .off methods to EventDispatcher
- fixed an issue with extending EventDispatcher
- DisplayObject, SpriteSheet, and SpriteSheetBuilder now inherit from EventDispatcher
- fixed an issue with the tick event's time value being epoch time instead of Timer time
- added Ticker.getEventTime()
- added Ticker.maxDelta
- the initialize methods for Point, Rectangle, and Matrix2D are now public
- added .copy() to Point, Rectangle, and Matrix2D
- fixed an issue that could occur when reinitializing Matrix2D
- added MovieClip.frameBounds
- fixed errors when the lib was loaded in a browser with no canvas support (ex. IE8)
- added support for .next on single frame spritesheet animations
- added the BitmapText class
- improved DOMElement redraw handling to avoid flicker and layout costs
- added Stage mouseleave and mouseenter events
- added tickstart, tickend, drawstart, and drawend events to Stage
- added getBounds() functionality for all display objects
- added MovieClip.getLabels() & getCurrentLabel()
- Filter.getBounds() now returns null as its default value
- bounds for cache() are now automatically adjusted for filters
- improved BlurFilter performance and results (thanks to Mario Klingemann)
- objects added to a MovieClip via addChild will now display over objects managed by the MovieClip
- Fixed clone on AlphaMapFilter
- Updated the build process to use NodeJS & Grunt.js. Please refer to the README in the build folder.
Version 0.6.1 [May 14, 2013]
- Updated demos:
- propagate the tick event to the stage. This is a best practice.
- Added AlphaMaskFilter demo.
- Added a "Graphics Winding" demo
- Added Safari note to the Cache demo
- Updated documentation:
- Added lots more examples.
- Matrix2D.rotate
- Matrix2D.tx named incorrectly
- Stage.stagemousedown event (stagemouseup was doc'd twice)
- DisplayObject.dblclick (case incorrect)
- Fixed example in Stage documentation (incorrect)
- Fixed example in Text documentation (missing quote)
- Fixed updateContext method name in docs (was incorrectly set to "setupContext")
- Added sample code to MovieClip documentation, and a MovieClip example.
- Added optional parameters to MovieClip constructor
- Updated description of DisplayObject.mouseEnabled
- Fixed setPaused/getPaused descriptions in Ticker, and added some better descriptions, a few examples, and updated documentation throughout.
- Updated SpriteSheetUtils/extractFrame documentation to mention Bitmap/sourceRect and security concerns
- Updated Bitmap/cache methods to clarify caching usage for Bitmaps
- Updated optional parameter for DisplayObject/cache
- Added initial example in EaselJS to show interaction
- Modified EventDispatcher to avoid unnecessary instanceof and apply
- Replaced the width=0 hack (for clearing canvases) with a setTransform/clearRect in DisplayObject, Container, and SpriteSheetUtils.
- Updated clearRect usages to use +1 on width and height to prevent crashes on Android (thanks mikelito)
- Fixed Matrix2D.scale method to properly apply scale when rotated (thanks fumio)
- Fixed bug with mouse and touch events in iOS's UIWebView (thanks cubica)
Version 0.6.0 [Feb 12, 2013]
- added new event model with EventDispatcher class
- added DisplayObject.cursor property
- added Container.getChildByName() method
- added ButtonHelper class
- fixed error with AlphaMaskFilter
- hitArea position now ignores the regX/Y of the target instance
- added Log class to provide verbose errors while debugging
- simplified & updated MovieClipPlugin to work with revised TweenJS plugin model
- added DisplayObject.set() shortcut method
- added MovieClip.autoReset property
- added Graphics.isEmpty() method
- improved support for empty masks
- added SpriteSheetBuilder.progress
- added SpriteSheetBuilder.timeSlice
- removed the callback param on SpriteSheetBuilder.buildAsync, replaced with .onComplete
- added SpriteSheetBuilder.onComplete and .onProgress
- fixes for various MovieClip bugs
- SpriteSheetBuilder now works correctly when adding more than one MovieClip
- fixed an issue with SpriteSheetBuilder defining frames that exceeded the image bounds
- added SpriteSheet.getFrameBounds()
- added BitmapAnimation.getBounds()
- added closePath support to Graphics.decodePath()
- changed how animationEnd events are fired, to support calling stop() in the handler
- animationEnd events now include a "next" value with the name of the next animation
- event types for MouseEvents now follow DOM standards (mousedown, click, dblclick etc)
- improved hitArea handling
- added version.js
- added MovieClip.currentFrame
- documentation updates
- new and improved build process, tools & documentation format
- added Stage.enableDOMEvents() method
- added default Stage.handleEvent() for integration with Ticker and new event model
- deprecated Stage.snapToPixel API
- added Graphics.ignoreScale API
- added a matrix parameter to Graphics.beginBitmapFill
Version 0.5.0 [Aug 24, 2012]
- moved all classes into a configurable createjs namespace
- added support for multitouch
- complete rewrite of drawing model to use a hybrid approach (save/restore & matrix)
- added DisplayObject.mask
- added Graphics.drawAsPath(ctx)
- added Text.getMeasuredHeight()
- added DisplayObject.updateContext(ctx)
- added DisplayObject.getMatrix(matrix)
- added DisplayObject.hitArea
- fixed issue with Text not displaying if .text is 0 or false
- fix for setChildIndex
- fix for addChildAt with multiple params
- added SpriteSheetBuilder
- added MovieClip.actionsEnabled
- updates to Ticker to improve support for requestAnimationFrame
- better support for negative corner values on .drawRoundRectComplex
- added stage.mouseMoveOutside & mouseEvent.rawX/Y
- added "createjs.createCanvas()" to support for alternative canvases (ex. exCanvas)
- added "scale" parameter to cache() and cleaned up the implementation
- fix for DOMElement with Opera
- various bug fixes and doc updates
- changed setTransform to return the instance for use in chaining
- started adding tutorials to address common questions and make it easier to get started
- stage.mouseX/Y now defaults to 0 instead of null
- text.textBaseline now defaults to "top" instead of null (resolved to "alphabetic")
- text.textAlign now defaults to "left" instead of null
- text.color now defaults to "#000" instead of null
- parameters passed to Stage.update are now passed on to onTick handlers
- for example, Ticker elapsedTime and paused params
- correctly resolves mouse positions for CSS scaled canvases & canvases with borders/padding
- added AlphaMapFilter & AlphaMaskFilter
- added Touch.disable(stage)
Version 0.4.2 [Apr 18, 2012]
- hot fix for issues with Ticker that caused reduced frame rates.
- NO API CHANGES
Version 0.4.1 [Apr 14, 2012]
- DisplayObject.tick has been renamed to onTick
- fixed a problem with preloading sprite sheet images when using tile based sheets
- worked around a bug in Safari with addFlippedFrames
- added setChildIndex(), swapChildrenAt(), and swapChildren() to Container
- made frequency param on enableMouseOver optional
- worked around a Chrome 17 bug that would prevent text w/o maxwidth from rendering
- additional fixes for video as a Bitmap source
- rewrite of Ticker to simplify implementation and solve issues with useRAF in Safari
- animations in BitmapAnimation now default to looping
- added BitmapAnimation.play/stop()
- added Bitmap.sourceRect
- Ticker now supports an object with a tick method, or a function as a listener
- renamed DisplayObject.tick to .onTick
- added MovieClip class
- added onComplete to SpriteSheet
- added ColorMatrix class
- added Graphics.decodePath for compressed vector paths
- support for passing a canvas string id to the Stage constructor
- various bug fixes and doc updates
- updateCache now clears the cacheCanvas correctly
Version 0.4 [Nov 30, 2011]
- completely rewrote BitmapSequence (now BitmapAnimation) & SpriteSheet including data format
- BitmapSequence was renamed BitmapAnimation
- SpriteSheet now handles calculating frame rects
- support for multi-image sprite sheets
- support for variable frame sizes
- support for frame reuse (non-linear frame order)
- support for frame registration points
- SpriteSheet supports URIs as sources (and will handle preloading)
- rewrote SpriteSheetUtils to support SpriteSheet changes
- renamed .flip() to .addFlippedFrames() and changed functionality significantly
- removed .frameDataToString()
- fixed support for video sources in Bitmap
- added support for null canvas for Stage
- added DOMElement, an experimental display object for including DOM elements in the display list
- separated tick and draw into separate phases to fix possible race conditions
- added Matrix2D.isIdentity()
- support for double click events (thanks to rbarazi)
- added MouseEvent.nativeEvent and MouseEvent.target properties
- fixes to Ticker, added second "paused" param when it calls tick
- added experimental support for requestAnimationFrame to Ticker
- fixed a problem with caching Container instances
- fixed an issue with .parent not being assigned on children of cloned Containers
- added filter support via DisplayObject.filters and Filter objects
- added sample filters: ColorFilter, ColorMatrixFilter, and BoxBlurFilter
- added DisplayObject.setTransform()
- added DisplayObject.onDoubleClick handler (thanks to rbarazi)
- added DisplayObject.cacheID and DisplayObject.getCacheDataURL()
- performance optimization for DisplayObject drawing (6910e6849856bd0740f8)
- added support for touch input (single point) via the Touch class
- added support for passing an image URI to the Bitmap constructor
- fixes to Shadow
- optimizations
- documentation updates
Version 0.3.2 [Mar 2, 2011]
- added stage.mouseInBounds
- added DisplayObject.onMouseOver and onMouseOut callbacks
- added stage.enableMouseOver(freq)
- improved support for calculating mouseX/Y in divs with relative positioning
- fixed Graphics.clone()
- fixed an issue with shadows not being reset properly
- migrated to use YUIDocs instead of JSDocs
- fixed an issue that prevented BitmapSequence instances with frameData from working with gotoAndPlay(frameNumber)
Version 0.3.1 [Feb 13, 2011]
- fixed issues with hitTest and mouse event callbacks on Container instances.
- added recursive clone option to Container and Shape
- fix for snapToPixel
- added cache, updateCache, and HelloWorld demos
- extensive code cleanup, including improved support for jsdoc
Version 0.3 [Feb 8, 2011]
- renamed Tick to Ticker
- adding a listener to Ticker twice will now move it to the end of the listener list
- added Ticker.getMeasuredFPS()
- added Ticker.setFPS()
- renamed Stage.tick to Stage.update and made Stage.tick point to Stage.update
- made the pauseable param "true" by default on Ticker.addListener()
- added Stage.toDataURL(backgroundColor, mimeType)
- renamed Rectangle.w/h to width/height
- improvements to commenting and documentation
- formalized inheritance model to make code more readable
- changed color to null instead of 0 in Shadow.IDENTITY
- fixed an error with simple sprite sheets that weren't set to loop
- implemented "tiny" instructions for Graphics. (ex. myGraphics.f("#0FF").c(x,y,r) )
- fixed problems with Graphics.clone()
- fixed bug with passing instructions to a Graphics object constructor
- complete rewrite of the render engine to be cleaner and more flexible
- added .decompose() method to Matrix2D
- added .skew() method to Matrix2D
- added .skewX/Y on DisplayObject
- added SpriteSheetUtils.extractFrame(spriteSheet,frame) method
- added basic multi-line support for Text
- added DisplayObject.suppressCrossDomainErrors property
- complete rewrite of the hit testing system to be cleaner and run 5-10x faster
- improved the interaction model:
- added .onPress, .onClick callbacks on DisplayObject
- removed .mouseChildren from Container
- made .mouseEnabled true by default
- added .onMouseDown, .onMouseUp, and .onMouseMove callbacks on Stage
- added MouseEvent
- Stage.getObjectsUnderPoint() has been moved to Container
- added Container.contains(child) method
- added DisplayObject.compositeOperation
- added appendProperties() and prependProperties methods to Matrix2D
- added DisplayObject.hitTest() method
- added stage.snapToPixelEnabled and displayObject.snapToPixel
- added DisplayObject.updateCache()
- renamed minified file from easeljs.js to easel.js
- Re-factored directory layout
Version 0.2.1 [Jan 12, 2011]
- optimized Graphics: reduced overhead by 80-90%
- added drawPolyStar method to Graphics
- fixed bug with using canvas as an image source for Bitmap
- made mouseChildren true by default for stage
- fixed major bug with Ticker.getTime()
Version 0.2 [Jan 6, 2011]
Focus on vector graphics and text.
- repackaged all class files to "easeljs" instead of "com.gskinner"
- added Graphics API, and revised Shape to use a Graphics instance
- added Text class
- added Point class and updated CoordTransform to use it
- added Rectangle class
- fixed minor issue with Ticker
- added initial implementation of Stage.mouseX/Y (likely to change)
- added new examples, updated others to work with revised APIs
- minor tweaks, fixes to code and documentation
- added support for multiple params on Container.addChild, addChildAt, removeChild & removeChildAt
Version 0.1 [Dec 17, 2010]
Initial release.