KitchenSync lib Change Log. Visit http://code.google.com/p/kitchensynclib/ for the latest version * = Contains syntax changes that may require refactoring of legacy code. ===== v2.0* ===== Note: Version 2.0 represents a major overhaul to the entire system for greater simplicity and practical functionality. This version will not be backwards compatible. Version 1.x development will continue under a separate branch starting with 1.7. REFACTORED The way time is handled throughout. The sync mode option is deprecated and will always be active. ADDED ISynchronizerCore and example core classes. This allows advanced users to switch between different methods of timing (e.g. enterframe or timer based) ADDED cycles to replace frames in Synchronizer. Every update counts as a cycle. ADDED FrameRateUtil for getting instantaneous and averaged framerates of the system. The FrameRateView now makes use of this class and has more options. REMOVED Timestamp class. From now on, the synchronizer will dispatch an int representing the system time since the SWF initialized. Also removed TimestampUtil CHANGED Using TimeStringParser_en to work with frames is now not recommended but a frameRate property has been added to support it. timeStringParser is now a property of KitchenSync instead of being defined in AbstractAction. ADDED a method to track the number of active actions. REFACTORED Constructors throughout the system for more consistency and ease of use. REMOVED delay from the KSFunction constructor. REFACTORED Loading classes. Now it's much easier to use and more powerful. ADDED KSLoader for queueing up Loaders for loading SWFs and images ADDED KSLoadQueue for quickly creating a class to load files from the network in a batch. ADDED the resultList property to the ILoaderAction interface so that you can quickly access the loaded files in a batch. FIXED some minor bugs REFACTORED IAction and AbstractAction. MOVED some important methods from AbstractAction-only to IAction. REMOVED action triggers from AbstractAction. Use KSSequenceGroups instead. ADDED an IJumpableAction to specify jumpToTime and jumpByTime separate from IAction. ADDED jumpToTime and jumpByTime to AbstractAction so (almost) all actions have this functionality. ADDED actionNS namespace for accessing certain methods of action classes. OPTIMIZED startTimeHasElapsed and durationHasElapsed in AbstractAction REFACTORED groups MOVED action group related files to org.as3lib.kitchensync.action.group package ADDED an interface for groups, IActionGroup. ADDED totalDuration to groups. ADDED KSRandomGroup. REMOVED KSSteppedSequenceGroup because it seemed kinda useless. ADDED Better docs to KitchenSyncEvent class. RENAMED KitchenSyncEvent types because of a bug in Flex which makes the wrong event type appear in the auto-complete if the constant name and string don't match. REMOVED eventType and useWeakReferences class properties of KSEventDispatcher. Modified other methods for garbage collection. REFACTORED tweens. ADDED easing related accessors to ITween. MOVED all tween related classes and tween targets into org.as3lib.kitchensync.action.tween package. Got rid of tweentarget package. IMPROVED build.xml to include more targets for building the library. Using SDK 3.4 now. ===== v1.7 ===== ADDED Grant Skinner's ColorMatrix class for some color tweens ADDED Saturation tween target for animating saturation changes (using ColorMatrix) ADDED Brightness tween target for animating brightness changes (using ColorMatrix) ADDED Contrast tween target for animating contrast changes (using ColorMatrix) ADDED TintTweenTarget for animating ColorTransorms ADDED KSURLLoader and KSXMLLoader for easier load queues CHANGED KSAsyncrhonousFunction to use strong references ===== v1.6 (2008.10.15) ===== NEW CONTRIBUTOR Brett Forsyth - welcome! ADDED TweenFactory which provides an easy to use interface for creating new tweens including an object parser similar to FuseKit's interface. ADDED SoundTransformTarget for changing volume or panning of a sound. ADDED KSSimultaneousEndGroup which causes all children to end simultaneously. ADDED KSSteppedSequenceGroup for sequencing powerpoint-like applications. ADDED finished coding INumericController ADDED isInstantaneous property to AbstractActions ADDED toString() methods to some ITweenTarget classes. Modified toString() for some groups. ADDED IAction and ISynchronizerClient interfaces. ADDED an optimized implementation of IAction, KSSimpleTween. Saw a 25% performance increase over KSTween! ADDED ITween interface CHANGED License to MIT license. CHANGED all static types that reference AbstractAction to IAction. Now IActions can be added to groups. (needs testing) CHANGED Synchronizer to utilize ISynchronizer client. (virtually no performance increase) :-( *CHANGED* Altered KSTween to use multiple tween targets. Now includes methods like addTweenTarget(). some clone methods are deprecated. CHANGED KSTween's EXISTING_FROM_VALUE to VALUE_AT_START_OF_TWEEN FIXED a bug in KSParallelGroup.stop() FIXED a non-bug where using addAction() can cause a null pointer exception after using kill() on a group. REMOVED commented out unused 'name' property of AbstractAction UPDATED wiki to reflect 1.5 syntax. ===== v1.5* (2008.07.08) ===== REFACTORED to optimize performance. Saw an improvement of about 50% ADDED TargetProperty and ITweenTarget (formerly ITweenable) to KSTweens (actually, these have been in there for a while, but now they're working) ADDED IFilterTweenTarget and implementations for tweening filter properties and simple blurs. ADDED INumericController as a base class for ITweenTarget ADDED KSTween.newWithTweenable() and KSTween.cloneWithTweenable() methods for creating tweens with custom tweenables. ADDED KSAsynchronousFunction for firing asyncrhonous functions in a sequence. Good for queues. ADDED FrameRateView utility which displays the framerate of the Synchronizer. ADDED message accessor to KSTrace FIXED a bug where children of a group are not cloned when the group is cloned. FIXED a bug in KSStaggeredGroup that caused some children not to fire. FIXED a bug where actions get fired multiple times in sync mode. (needs verification) *MOVED* snapToWholeValue from KSTween to TargetPropety. *RENAMED* snapToWholeValue to snapToInteger. CHANGED KSTween's 'fromValue' and 'toValue' to 'startValue' and 'endValue' and are actually stored in the ITweenTargets. *CHANGED* syntax of KSTween constructor. Now 'startValue' comes before 'endValue'. *CHANGED* 'util' to 'utils' to match Adobe's and AS3lib's naming conventions. CHANGED 'offset' to 'delay' (kept legacy accessors for offset) CHANGED KSSoundController now uses the time string parser on the 'soundOffset'. CHANGED the core of the Synchronizer to a timer based system thus improving speed. CHANGED default policy for 'snapToValueOnComplete' to true which should fix some tween problems. CHANGED default frequency for oscillating functions. ===== v1.2* (2008.05.2) ===== NEW CONTRIBUTOR Aral Balkan - welcome! *RENAMED* Nearly the entire library *MOVED* All classes into new packages *ADDED* KitchenSync as the entry point to the library. Use KitchenSync.initialize(this, "1.2"); to start the app. CHANGED Synchronizer is no longer used to initialize the library and getInstance() no longer throws an error. FIXED A bug in Sequence.kill() ===== v1.1 (2008.02.22) ===== ADDED jumpToTime() method to Tween (this may be moved to AbstractSynchronizedAction in a later release) ADDED getTimestampFromFrames() and getTimestampFromMilliseconds() to TimestampUtil ADDED Timecode to TimeStringParser. Now ":ss", "mm:ss;ff", "dd:hh:mm:ss;ff", etc. are now supported. *ADDED* ActionDefaults class for storing default initialization values. ADDED easeOutIn() to most of the easing functions (buggy. seems to overshoot target in some cases) ADDED version check in Synchronizer.initialize() CHANGED type of Numbers within Timestamp to int. REFACTORED all actions to contain super() in the constructor. REMOVED errors that are thrown when pause() and start() are called at the wrong times. ===== v1.0.1 (2008.02.04) ====== FIXED Cubic.easeOut bug. ADDED getters for Tween's toValue and fromValue. ADDED source code to main binary. ADDED metadata for events. UPDATED docs and added summaries to all wiki pages. ===== v1.0 (2008.01.21) ===== Note: This is Milestone 1.0 as it is the official release and all basic functionality is complete. ADDED lots of documentation on the project wiki (http://code.google.com/p/kitchensynclib/w/list) TESTED SynchronizedSetProperty and made minor changes. ===== v0.4.2 (2007.12.20) ===== ADDED ITimeStringParser. duration and offset now support string values such as "12sec" or "15 frames" or "1h1m2s3ms". See TimeStringParser_en for details CHANGED TimeUnit and ActionControllerCommands to be strong-typed enumerations. FIXED (partially) bug in Oscillate when dealing with frequencies and different time units. ===== v0.4.1 (2007.12.13) ===== FIXED problems with sync property for Tweens MOVED project to Google Code (http://kitchensynclib.googlecode.com/) ===== v0.4 (2007.12.04) ===== ADDED pause(), unpause(), and stop() to AbstractSynchronizedAction. Also created reset() for Tweens. ADDED support for milliseconds or frames using the TimeUnit class. The default time unit is now milliseconds. ADDED new AbstractSynchronizedAction type - ActionController - which can tell another action to play, pause, unpause, stop, or kill. ADDED ActionControllerCommands class for holding static constants for each command. ADDED SynchronizedGotoFrame for controlling MovieClips (untested) ADDED SynchronizedSetProperty (not tested) ADDED new class TimestampUtil with add(), subtract() methods. ADDED getChildAtIndex() method to AbstractSynchronizedActionGroup. ADDED removeTrigger() and removeEventTrigger() to AbstractSynchronizedAction. ADDED setTime() to Timestamp ADDED minimum and maximum modifiers to Random.ease function. ADDED triangle() to Oscillate class. ADDED CHILD_START events and moved onChildComplete() and onChildStart() into the AbstractSynchronizedActionGroup class. ADDED PAUSE and UNPAUSE events ADDED clone() to Timestamp FIXED the pesky bug where child actions executed 1 frame late. FIXED a bug where Parallel didn't dispatch CHILD_COMPLETE MOVED some as3 library files to an externally linked library CHANGED start() to return the started action. This will make it easier declare and start in the same line: var tween:Tween = Tween(new Tween(x,y,...).start()); CHANGED Tween's 'targetProperty' getter and setter to 'value' CHANGED startTimeIsElapsed and durationIsElapsed to public read-only properties. OPTIMIZED performance of some functions with sounds and groups. ===== v0.3.1 (2007.09.28) ===== ADDED a User's Guide to the docs folder. Docs are available at http://mimswright.com/kitchensync/docs MOVED code into a Flex Library Project (and moved demo to a seperate as3 project). Destroyed old repository. ===== v0.3 (2007.07.07) ===== ADDED asdoc pages in the /bin/docs folder. ADDED autoDelete flag which deletes actions on complete if true ADDED addTrigger() and addEventTrigger() to AbstractSyncrhonizedAction so that actions can be triggered by other actions or by events ADDED clone() method to most SynchronizedAction classes ADDED cloneWithTarget() method to Tween class ADDED reverse() and cloneReversed() methods to the Tween class ADDED reverseChildOrder() to ActionGroup ADDED snapToValueOnComplete and snapToWholeNumber to Tween class ADDED documentation to easing functions ADDED absoluteSine(), sawtooth(), and pulse() to the Oscillate class ADDED Sextic easing class ADDED Stepped easing class which produces an easing function that is stepped based on another one. ADDED getAveragedFunction() to EasingUtils which produces an average of two types of easing functions. ADDED Tween.EXISTING_FROM_VALUE as the from value default. Reordered Tween constructor parameters. REMOVED shortcuts for amplitude, period, and overshoot REMOVED easeIn(), easeOut(), easeInOut() for Linear and Random MOVED Sine.oscillate() to Oscillate.sine() RENAMED project to KitchenSync. Moved code to src folder RENAMED com.mimswright.animation to com.mimswright.sync OPTIMIZED the way that actions listen to synchronizer TESTED to ensure the re-usability of action classes TESTED and tweaked the SynchronizedSound class ===== v0.2 (2007.06.21) ===== ADDED Staggered groups ADDED SyncrhonizedSound (not tested) ADDED Wait class ADDED EasingUtil with call() method for more safely calling easing functions and the generateArray() method for pre-calculating ADDED Sine.oscillate() and Random.ease() easing functions ADDED easing funcitons. Rewrote all penner v2 easing functions to use fewer arguments and ported to as3 ADDED ability to set easing function modifiers on a Tween object (includes shortcuts for amplitude, period, and overshoot) ADDED ITweenable and TargetProperty classes (aren't implemented yet) FIXED a bug with Parallel where items were deleted from array on complete. RENAMED SynchronizedEvent to SynchronizedDispatchEvent ===== v0.1 (2007.06.17) ===== ADDED... Synchronizer AbstractSyncrhonizedAction AbstractSyncrhonizedActionGroup Sequence and Parallel SynchronizedFunction SynchronizedTrace SynchronizedEvent SynchronizerEvent Penner's Easing v3 (from alex uhlmann)