From codesite-noreply at google.com Mon Jun 2 18:18:31 2008 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Mon, 02 Jun 2008 18:18:31 -0700 Subject: [Golist] [goasap commit] r41 - in trunk/goasap/src_go/org/goasap: . interfaces items managers Message-ID: <000e0cd29694e2e75d044eb8e385@google.com> Author: mosesoak Date: Mon Jun 2 18:17:54 2008 New Revision: 41 Added: trunk/goasap/src_go/org/goasap/interfaces/ILiveManager.as Modified: trunk/goasap/src_go/org/goasap/GoEngine.as trunk/goasap/src_go/org/goasap/interfaces/IManager.as trunk/goasap/src_go/org/goasap/items/GoItem.as trunk/goasap/src_go/org/goasap/managers/OverlapMonitor.as Log: Version 0.4.9 Improves GoASAP's management layer. 1. All managers are now accessed by GoEngine in the order they are added, so various duties can be carefully ordered. 2. NEW INTERFACE: ILiveManager. GoEngine has been altered so that any managers that implement this interface receive a special onUpdate() callback after each update cycle. 3. OverlapMonitor has been rewritten to use Dictionaries instead of Arrays to store handlers internally, and to correct an efficiency flaw in release(). GoItem.defaultPulseInterval has been set back to ENTER_FRAME. While 33ms does perform faster on benchmarks with thousands of animations, ENTER_FRAME runs much smoother in practical contexts. Documentation has been improved in IManager describing the manager layer in a more friendly, tutorial style. Modified: trunk/goasap/src_go/org/goasap/GoEngine.as ============================================================================== --- trunk/goasap/src_go/org/goasap/GoEngine.as (original) +++ trunk/goasap/src_go/org/goasap/GoEngine.as Mon Jun 2 18:17:54 2008 @@ -1 +1 @@ -?/** * Copyright (c) 2007 Moses Gunesch * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ package org.goasap { import flash.display.Sprite; import flash.events.Event; import flash.events.TimerEvent; import flash.utils.Dictionary; import flash.utils.Timer; import flash.utils.getQualifiedClassName; import flash.utils.getTimer; import org.goasap.errors.DuplicateManagerError; import org.goasap.interfaces.IManageable; import org.goasap.interfaces.IManager; import org.goasap.interfaces.IUpdatable; /** * Provides update calls to IUpdatable instances on their specified pulseInterval. * *

Using these Docs

* *

Protected methods and properties have been excluded in almost all * cases, but are documented in the classes. Exceptions include key protected * methods or properties that are integral for writing subclasses or understanding * the basic mechanics of the system. Many Go classes can be used as is without * subclassing, so the documentation offers an uncluttered view of their public * usage.

* *

Introduction to Go

* *

The Go ActionScript Animation Platform ("GOASAP") is a lightweight, portable * set of generic base classes for buliding AS3 animation tools. It provides structure * and core functionality, but does not define the specifics of animation-handling * classes like tweens.

* *

Important: Store your custom Go classes in a package bearing your * own classpath, not in the core package! This will help avoid confusion * with other authors' work.

* *

You may modify any class in the goasap package to suit your project's needs.

* *

Go is a community initiative led by Moses Gunesch at * MosesSupposes.com. Please visit the * Go website for more information.

* *

GoEngine

* *

GoEngine sits at the center of the Go system, and along with the IUpdatable * interface is the only required element for using Go. GoEngine references two other * interfaces for adding system-wide managers, IManager and IManageable. * All other classes in the go package are merely one suggestion of how a * system could be structured within Go, and may be considered optional * elements. To create an API using the provided classes, you simply need * to extend the item classes LinearGo and PhysicsGo to create animation items.

* *

GoEngine serves two purposes: first, it keeps a large system efficient * by stacking and running updates on blocks of items. Note that any IUpdatable * instance may specify its own pulseInterval; items with matching pulses * are grouped into queues for efficiency. Its second purpose is centralization. * By using a single hub for pulse-driven items of all types, management classes * can be attached to GoEngine to run processes across items. This is done voluntarily * by the end-user with addManager, which keeps management entirely * compile-optional and extensible.

* *

You normally don't need to modify this class to use Go. While Go items typically * only use addItem and removeItem, your project's code might * use GoEngine to register managers, or to pause, resume or stop all Go animation in * a SWF at once.

* *

{In the game of Go, the wooden playing board, or Goban, features a grid * on which black & white go-ishi stones are laid at its intersections.}

* * @author Moses Gunesch */ public class GoEngine { // -== Constants ==- public static const INFO:String = "GoASAP 0.4.8jg1 (c) Moses Gunesch, MIT Licensed."; // -== Settable Class Defaults ==- /** * A pulseInterval that runs on the player's natural framerate, * which is often most efficient. */ public static const ENTER_FRAME : int = -1; // -== Protected Properties ==- // Note: Various formats for item data have been experimented with including breaking the item lists out into // a GoEngineList class, which was nicer-looking but did not perform well. Since GoEngine doesn't normally // require active work, this less-pretty but efficient flat-data format was opted for. A minor weakness of this // format is its use of a Dictionary, which means update calls are not ordered like they would be with an Array. // The Dictionary stores items' pulseInterval values, which is safer than relying on items to not change them. private static var managers : Object = new Object(); // registration list of IManager instances private static var timers : Dictionary = new Dictionary(false); // key: pulseInterval, value: Timer for that pulse private static var items : Dictionary = new Dictionary(false); // key: IUpdatable item, value: pulseInterval at add. private static var itemCounts : Dictionary = new Dictionary(false); // key: pulseInterval, value: item count for that pulse private static var pulseSprite : Sprite; // used for ENTER_FRAME pulse private static var paused : Boolean = false; // These additional lists enables caching of items that are added during the update cycle for the same pulse. // Without doing this, item groups like sequences often go out of sync because part of the next group gets updated // before the rest. There may be a better way to do this, so please feel free to experiment. (Test changes w/ TweenBencher!) private static var lockedPulses : Dictionary = new Dictionary(false); // key: pulseInterval, value: true private static var delayedPulses : Dictionary = new Dictionary(false); // key: pulseInterval, value: true private static var addQueue : Dictionary = new Dictionary(false); // key: IUpdatable item, value: true // -== Public Class Methods ==- /** * @param className A string naming the manager class, such as "OverlapMonitor". * @return The manager instance, if registered. * @see #addManager() * @see #removeManager() */ public static function getManager(className:String) : IManager { return managers[ className ]; } /** * Enables the extending of this class' functionality with a tight * coupling to an IManager. * *

Tight coupling is crucial in such a time-sensitive context; * standard events are too asynchronous. All items that implement * IManageable are reported to registered managers as they add and * remove themselves from GoEngine.

* *

Managers normally act as singletons within the Go system (which * you are welcome to modify). This method throws a DuplicateManagerError * if an instance of the same manager class is already registered. Use a * try/catch block when calling this method if your program might duplicate * managers, or use getManager() to check for prior registration.

* * @param instance An instance of a manager you wish to add. * @see #getManager() * @see #removeManager() */ public static function addManager( instance:IManager ):void { var className:String = getQualifiedClassName(instance); className = className.slice(className.lastIndexOf("::")+2); if (managers[ className ]) { throw new DuplicateManagerError( className ); return; } managers[ className ] = instance; } /** * Unregisters any manager set in addManager. * * @param className A string naming the manager class, such as "OverlapMonitor". * @see #getManager() * @see #addManager() */ public static function removeManager( className:String ):void { delete managers[ className ]; } /** * Test whether an item is currently stored and being updated by the engine. * * @param item Any object implementing IUpdatable * @return Whether the IUpdatable is in the engine */ public static function hasItem( item:IUpdatable ):Boolean { return (items[ item ]!=null); } /** * Adds an IUpdatable instance to an update-queue corresponding to * the item's pulseInterval property. * * @param item Any object implementing IUpdatable that wishes * to receive update calls on a pulse. * * @return Returns false only if this item was already in the * engine under the same pulse. (If an existing item is added * but the pulseInterval has changed it will be removed, * re-added, and true will be returned.) * * @see #removeItem() */ public static function addItem( item:IUpdatable ):Boolean { // Group items by pulse for efficient update cycles. var interval:int = item.pulseInterval; if (items[ item ]) { if (items[ item ] == item.pulseInterval) return false; else removeItem(item); } if (lockedPulses[ interval ]==true) { // this prevents items from being added during an update loop in progress. delayedPulses[ interval ] = true; // flags update to clear the queue when the in-progress loop completes. addQueue[ item ] = true; // for tightest syncing of item groups, read the documentation under GoItem.update(). } items[ item ] = interval; // Tether item to original pulseint. Used in removeItem & setPaused(false). if (!timers[ interval ]) { addPulse( interval ); itemCounts[ interval ] = 1; } else { itemCounts[ interval ] ++; } // Report IManageable instances to registered managers if (item is IManageable) { for each (var manager:IManager in managers) manager.reserve( item as IManageable ); } return true; } /** * Removes an item from the queue and removes its pulse timer if * the queue is depleted. * * @param item Any IUpdatable previously added that wishes * to stop receiving update calls. * * @return Returns false if the item was not in the engine. * * @see #addItem() */ public static function removeItem( item:IUpdatable ):Boolean { if (items[ item ]==null) return false; var interval: int = items[ item ]; if ( -- itemCounts[ interval ] == 0 ) { removePulse( interval ); delete itemCounts[ interval ]; } delete items[ item ]; delete addQueue[ item ]; // Report IManageable item removal to registered managers. if (item is IManageable) { for each (var manager:IManager in managers) manager.release( item as IManageable ); } return true; } /** * Removes all items and resets the engine, * or removes just items running on a specific pulse. * * @param pulseInterval Optionally filter by a specific pulse * such as ENTER_FRAME or a number of milliseconds. * @return The number of items successfully removed. * @see #removeItem() */ public static function clear(pulseInterval:Number = NaN) : uint { var all:Boolean = (isNaN(pulseInterval)); var n:Number = 0; for (var item:Object in items) { if (all || items[ item ]==pulseInterval) if (removeItem(item as IUpdatable)==true) n++; } return n; } /** * Retrieves number of active items in the engine * or active items running on a specific pulse. * * @param pulseInterval Optionally filter by a specific pulseInterval * such as ENTER_FRAME or a number of milliseconds. * * @return Number of active items in the Engine. */ public static function getCount(pulseInterval:Number = NaN) : uint { if (!isNaN(pulseInterval)) return (itemCounts[pulseInterval]); var n:Number = 0; for each (var count: int in itemCounts) n += count; return n; } /** * @return The paused state of engine. * @see #setPaused() */ public static function getPaused() : Boolean { return paused; } /** * Pauses or resumes all animation globally by suspending processing, * and calls pause() or resume() on each item with those methods. * *

The return value only reflects how many items had pause() or resume() * called on them, but the GoEngine.getPaused() state will change if any * pulses are suspended or resumed.

* * @param pause Pass false to resume if currently paused. * @param pulseInterval Optionally filter by a specific pulse * such as ENTER_FRAME or a number of milliseconds. * @return The number of items on which a pause() or resume() * method was called (0 doesn't necessarily reflect * whether the GoEngine.getPaused() state changed, it * may simply indicate that no items had that method). * @see #resume() */ public static function setPaused(pause:Boolean=true, pulseInterval:Number = NaN) : uint { if (paused==pause) return 0; var n:Number = 0; var pulseChanged:Boolean = false; var all:Boolean = (isNaN(pulseInterval)); var method:String = (pause ? "pause" : "resume"); for (var item:Object in items) { var pulse:int = (items[item] as int); if (all || pulse==pulseInterval) { pulseChanged = (pulseChanged || (pause ? removePulse(pulse) : addPulse(pulse))); // call pause or resume on the item if it has such a method. if (item.hasOwnProperty(method)) { if (item[method] is Function) { item[method].apply(item); n++; } } } } if (pulseChanged) paused = pause; return n; } // -== Private Class Methods ==- /** * Executes the update queue corresponding to the dispatcher's interval. * * @param event TimerEvent or Sprite ENTER_FRAME Event */ private static function update(event:Event) : void { var currentTime:Number = getTimer(); var pulse:int = (event is TimerEvent ? ( event.target as Timer ).delay : ENTER_FRAME); lockedPulses[ pulse ] = true; for (var item:* in items) { if (items[ item ]==pulse && !addQueue[ item ]) { (item as IUpdatable).update(currentTime); } } lockedPulses[ pulse ] = false; if (delayedPulses[ pulse ]) { for (item in addQueue) delete addQueue[ item ]; delete delayedPulses[ pulse ]; } // updateAfterEvent() should not be needed as long as items follow tight-syncing instructions in GoItem.update() documentation. // if (pulse!=ENTER_FRAME) // (event as TimerEvent).updateAfterEvent(); } /** * Creates new timers when a previously unused interval is specified, * and tracks the number of items associated with that interval. * * @param pulse The pulseInterval requested * @return Whether a pulse was added */ private static function addPulse(pulse : int) : Boolean { if (pulse==ENTER_FRAME) { if (!pulseSprite) { timers[ENTER_FRAME] = pulseSprite = new Sprite(); pulseSprite.addEventListener(Event.ENTER_FRAME, update); } return true; } var t:Timer = timers[ pulse ] as Timer; if (!t) { t = timers[ pulse ] = new Timer(pulse); (timers[ pulse ] as Timer).addEventListener(TimerEvent.TIMER, update); t.start(); return true; } return false; } /** * Tracks whether a removed item was the last one using a timer * and if so, removes that timer. * * @param pulse The pulseInterval corresponding to an item being removed. * @return Whether a pulse was removed */ private static function removePulse(pulse : int) : Boolean { if (pulse==ENTER_FRAME) { if (pulseSprite) { pulseSprite.removeEventListener(Event.ENTER_FRAME, update); delete timers[ ENTER_FRAME ]; pulseSprite = null; return true; } } var t:Timer = timers[ pulse ] as Timer; if (t) { t.stop(); t.removeEventListener(TimerEvent.TIMER, update); delete timers[ pulse ]; return true; } return false; } } } \ No newline at end of file +?/** * Copyright (c) 2007 Moses Gunesch * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ package org.goasap { import flash.display.Sprite; import flash.events.Event; import flash.events.TimerEvent; import flash.utils.Dictionary; import flash.utils.Timer; import flash.utils.getQualifiedClassName; import flash.utils.getTimer; import org.goasap.errors.DuplicateManagerError; import org.goasap.interfaces.IManageable; import org.goasap.interfaces.IManager; import org.goasap.interfaces.IUpdatable; import org.goasap.interfaces.ILiveManager; /** * Provides update calls to IUpdatable instances on their specified pulseInterval. * *

Using these Docs

* *

Protected methods and properties have been excluded in almost all * cases, but are documented in the classes. Exceptions include key protected * methods or properties that are integral for writing subclasses or understanding * the basic mechanics of the system. Many Go classes can be used as is without * subclassing, so the documentation offers an uncluttered view of their public * usage.

* *

Introduction to Go

* *

The Go ActionScript Animation Platform ("GOASAP") is a lightweight, portable * set of generic base classes for buliding AS3 animation tools. It provides structure * and core functionality, but does not define the specifics of animation-handling * classes like tweens.

* *

Important: Store your custom Go classes in a package bearing your * own classpath, not in the core package! This will help avoid confusion * with other authors' work.

* *

You may modify any class in the goasap package to suit your project's needs.

* *

Go is a community initiative led by Moses Gunesch at * MosesSupposes.com. Please visit the * Go website for more information.

* *

GoEngine

* *

GoEngine sits at the center of the Go system, and along with the IUpdatable * interface is the only required element for using Go. GoEngine references two other * interfaces for adding system-wide managers, IManager and IManageable. * All other classes in the go package are merely one suggestion of how a * system could be structured within Go, and may be considered optional * elements. To create an API using the provided classes, you simply need * to extend the item classes LinearGo and PhysicsGo to create animation items.

* *

GoEngine serves two purposes: first, it keeps a large system efficient * by stacking and running updates on blocks of items. Note that any IUpdatable * instance may specify its own pulseInterval; items with matching pulses * are grouped into queues for efficiency. Its second purpose is centralization. * By using a single hub for pulse-driven items of all types, management classes * can be attached to GoEngine to run processes across items. This is done voluntarily * by the end-user with addManager(), which keeps management entirely * compile-optional and extensible. See the documentation for IManager * to learn more about Go's management architeture.

* *

You normally don't need to modify this class to use Go. While Go items typically * only use addItem and removeItem, your project's code might * use GoEngine to register managers, or to pause, resume or stop all Go animation in * a SWF at once.

* *

{In the game of Go, the wooden playing board, or Goban, features a grid * on which black & white go-ishi stones are laid at its intersections.}

* * @see org.goasap.items.LinearGo LinearGo * @see org.goasap.interfaces.IManager IManager * @author Moses Gunesch */ public class GoEngine { // -== Constants ==- public static const INFO:String = "GoASAP 0.4.9 (c) Moses Gunesch, MIT Licensed."; // -== Settable Class Defaults ==- /** * A pulseInterval that runs on the player's natural framerate, * which is often most efficient. */ public static const ENTER_FRAME : int = -1; // -== Protected Properties ==- // Note: Various formats for item data have been experimented with including breaking the item lists out into // a GoEngineList class, which was nicer-looking but did not perform well. Since GoEngine doesn't normally // require active work, this less-pretty but efficient flat-data format was opted for. A minor weakness of this // format is its use of a Dictionary, which means update calls are not ordered like they would be with an Array. // The Dictionary stores items' pulseInterval values, which is safer than relying on items to not change them. // Tests also show that Dictionary performs faster than Array for accessing and deleting items. private static var managerTable : Object = new Object(); // registration list of IManager instances private static var managers : Array = new Array(); // ordered registration list of IManager instances private static var liveManagers : uint = 0; private static var timers : Dictionary = new Dictionary(false); // key: pulseInterval, value: Timer for that pulse private static var items : Dictionary = new Dictionary(false); // key: IUpdatable item, value: pulseInterval at add. private static var itemCounts : Dictionary = new Dictionary(false); // key: pulseInterval, value: item count for that pulse private static var pulseSprite : Sprite; // used for ENTER_FRAME pulse private static var paused : Boolean = false; // These additional lists enables caching of items that are added during the update cycle for the same pulse. // This prevents groups & sequences from going out of sync by ensuring that each cycle completes before new items are added. private static var lockedPulses : Dictionary = new Dictionary(false); // key: pulseInterval, value: true private static var delayedPulses : Dictionary = new Dictionary(false); // key: pulseInterval, value: true private static var addQueue : Dictionary = new Dictionary(false); // key: IUpdatable item, value: true // -== Public Class Methods ==- /** * @param className A string naming the manager class, such as "OverlapMonitor". * @return The manager instance, if registered. * @see #addManager() * @see #removeManager() */ public static function getManager(className:String) : IManager { return managerTable[ className ]; } /** * Enables the extending of this class' functionality with a tight * coupling to an IManager. * *

Tight coupling is crucial in such a time-sensitive context; * standard events are too asynchronous. All items that implement * IManageable are reported to registered managers as they add and * remove themselves from GoEngine.

* *

Managers normally act as singletons within the Go system (which * you are welcome to modify). This method throws a DuplicateManagerError * if an instance of the same manager class is already registered. Use a * try/catch block when calling this method if your program might duplicate * managers, or use getManager() to check for prior registration.

* * @param instance An instance of a manager you wish to add. * @see #getManager() * @see #removeManager() */ public static function addManager( instance:IManager ):void { var className:String = getQualifiedClassName(instance); className = className.slice(className.lastIndexOf("::")+2); if (managerTable[ className ]) { throw new DuplicateManagerError( className ); return; } managerTable[ className ] = instance; managers.push(instance); if (instance is ILiveManager) liveManagers++; } /** * Unregisters any manager set in addManager. * * @param className A string naming the manager class, such as "OverlapMonitor". * @see #getManager() * @see #addManager() */ public static function removeManager( className:String ):void { managers.splice(managers.indexOf(managerTable[ className ]), 1); if (managerTable[ className ] is ILiveManager) liveManagers--; delete managerTable[ className ]; // leave last } /** * Test whether an item is currently stored and being updated by the engine. * * @param item Any object implementing IUpdatable * @return Whether the IUpdatable is in the engine */ public static function hasItem( item:IUpdatable ):Boolean { return (items[ item ]!=null); } /** * Adds an IUpdatable instance to an update-queue corresponding to * the item's pulseInterval property. * * @param item Any object implementing IUpdatable that wishes * to receive update calls on a pulse. * * @return Returns false only if this item was already in the * engine under the same pulse. (If an existing item is added * but the pulseInterval has changed it will be removed, * re-added, and true will be returned.) * * @see #removeItem() */ public static function addItem( item:IUpdatable ):Boolean { // Group items by pulse for efficient update cycles. var interval:int = item.pulseInterval; if (items[ item ]) { if (items[ item ] == item.pulseInterval) return false; else removeItem(item); } if (lockedPulses[ interval ]==true) { // this prevents items from being added during an update loop in progress. delayedPulses[ interval ] = true; // flags update to clear the queue when the in-progress loop completes. addQueue[ item ] = true; // for tightest syncing of item groups, read the documentation under GoItem.update(). } items[ item ] = interval; // Tether item to original pulseint. Used in removeItem & setPaused(false). if (!timers[ interval ]) { addPulse( interval ); itemCounts[ interval ] = 1; } else { itemCounts[ interval ] ++; } // Report IManageable instances to registered managers if (item is IManageable) { for each (var manager:IManager in managers) manager.reserve( item as IManageable ); } return true; } /** * Removes an item from the queue and removes its pulse timer if * the queue is depleted. * * @param item Any IUpdatable previously added that wishes * to stop receiving update calls. * * @return Returns false if the item was not in the engine. * * @see #addItem() */ public static function removeItem( item:IUpdatable ):Boolean { if (items[ item ]==null) return false; var interval: int = items[ item ]; if ( -- itemCounts[ interval ] == 0 ) { removePulse( interval ); delete itemCounts[ interval ]; } delete items[ item ]; delete addQueue[ item ]; // * see note following update // Report IManageable item removal to registered managers. if (item is IManageable) { for each (var manager:IManager in managers) manager.release( item as IManageable ); } return true; } /** * Removes all items and resets the engine, * or removes just items running on a specific pulse. * * @param pulseInterval Optionally filter by a specific pulse * such as ENTER_FRAME or a number of milliseconds. * @return The number of items successfully removed. * @see #removeItem() */ public static function clear(pulseInterval:Number = NaN) : uint { var all:Boolean = (isNaN(pulseInterval)); var n:Number = 0; for (var item:Object in items) { if (all || items[ item ]==pulseInterval) if (removeItem(item as IUpdatable)==true) n++; } return n; } /** * Retrieves number of active items in the engine * or active items running on a specific pulse. * * @param pulseInterval Optionally filter by a specific pulseInterval * such as ENTER_FRAME or a number of milliseconds. * * @return Number of active items in the Engine. */ public static function getCount(pulseInterval:Number = NaN) : uint { if (!isNaN(pulseInterval)) return (itemCounts[pulseInterval]); var n:Number = 0; for each (var count: int in itemCounts) n += count; return n; } /** * @return The paused state of engine. * @see #setPaused() */ public static function getPaused() : Boolean { return paused; } /** * Pauses or resumes all animation globally by suspending processing, * and calls pause() or resume() on each item with those methods. * *

The return value only reflects how many items had pause() or resume() * called on them, but the GoEngine.getPaused() state will change if any * pulses are suspended or resumed.

* * @param pause Pass false to resume if currently paused. * @param pulseInterval Optionally filter by a specific pulse * such as ENTER_FRAME or a number of milliseconds. * @return The number of items on which a pause() or resume() * method was called (0 doesn't necessarily reflect * whether the GoEngine.getPaused() state changed, it * may simply indicate that no items had that method). * @see #resume() */ public static function setPaused(pause:Boolean=true, pulseInterval:Number = NaN) : uint { if (paused==pause) return 0; var n:Number = 0; var pulseChanged:Boolean = false; var all:Boolean = (isNaN(pulseInterval)); var method:String = (pause ? "pause" : "resume"); for (var item:Object in items) { var pulse:int = (items[item] as int); if (all || pulse==pulseInterval) { pulseChanged = (pulseChanged || (pause ? removePulse(pulse) : addPulse(pulse))); // call pause or resume on the item if it has such a method. if (item.hasOwnProperty(method)) { if (item[method] is Function) { item[method].apply(item); n++; } } } } if (pulseChanged) paused = pause; return n; } // -== Private Class Methods ==- /** * Executes the update queue corresponding to the dispatcher's interval. * * @param event TimerEvent or Sprite ENTER_FRAME Event */ private static function update(event:Event) : void { var currentTime:Number = getTimer(); var pulse:int = (event is TimerEvent ? ( event.target as Timer ).delay : ENTER_FRAME); lockedPulses[ pulse ] = true; var doLiveUpdate:Boolean = (liveManagers > 0); var updated:Array; if (doLiveUpdate) updated = []; // syncs the live manager list to items actually updated for (var item:* in items) { if (items[ item ]==pulse && !addQueue[ item ]) { (item as IUpdatable).update(currentTime); if (doLiveUpdate) updated.push(item); } } lockedPulses[ pulse ] = false; if (delayedPulses[ pulse ]) { for (item in addQueue) delete addQueue[ item ]; delete delayedPulses[ pulse ]; } // updateAfterEvent() should not be needed as long as items follow tight-syncing instructions in GoItem.update() documentation. // if (pulse!=ENTER_FRAME) (event as TimerEvent).updateAfterEvent(); if (doLiveUpdate) for each (var manager:Object in managers) if (manager is ILiveManager) (manager as ILiveManager).onUpdate(pulse, updated, currentTime); // * see note } // * note: In one rare case that has not been reported yet but is theoretically possible, the 'updated' list // passed could contain already-released items. This could only happen if the item is removed & released // just after the main update cycle but before the the doLiveUpdate() routine runs. If you encounter this issue // please report it to the GoASAP mailing list, it's too involved to bother with before it's a problem. /** * Creates new timers when a previously unused interval is specified, * and tracks the number of items associated with that interval. * * @param pulse The pulseInterval requested * @return Whether a pulse was added */ private static function addPulse(pulse : int) : Boolean { if (pulse==ENTER_FRAME) { if (!pulseSprite) { timers[ENTER_FRAME] = pulseSprite = new Sprite(); pulseSprite.addEventListener(Event.ENTER_FRAME, update); } return true; } var t:Timer = timers[ pulse ] as Timer; if (!t) { t = timers[ pulse ] = new Timer(pulse); (timers[ pulse ] as Timer).addEventListener(TimerEvent.TIMER, update); t.start(); return true; } return false; } /** * Tracks whether a removed item was the last one using a timer * and if so, removes that timer. * * @param pulse The pulseInterval corresponding to an item being removed. * @return Whether a pulse was removed */ private static function removePulse(pulse : int) : Boolean { if (pulse==ENTER_FRAME) { if (pulseSprite) { pulseSprite.removeEventListener(Event.ENTER_FRAME, update); delete timers[ ENTER_FRAME ]; pulseSprite = null; return true; } } var t:Timer = timers[ pulse ] as Timer; if (t) { t.stop(); t.removeEventListener(TimerEvent.TIMER, update); delete timers[ pulse ]; return true; } return false; } } } \ No newline at end of file Added: trunk/goasap/src_go/org/goasap/interfaces/ILiveManager.as ============================================================================== --- (empty file) +++ trunk/goasap/src_go/org/goasap/interfaces/ILiveManager.as Mon Jun 2 18:17:54 2008 @@ -0,0 +1,4 @@ +/** * Copyright (c) 2008 Moses Gunesch * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ package org.goasap.interfaces { + import org.goasap.interfaces.IManager; + /** * Instances receive a callback from GoEngine after each update cycle, * allowing managers to more easily perform ongoing processes during animation. * *

[This is a more advanced manager interface, so if * you are just getting started with Go's management system it is suggested that * you focus on IManager & IManageable, and save this * section for when you need it.]

* *

Hypothetical examples:

* *

Each ILiveManager receives a special onUpdate() callback * after GoEngine completes each pulse cycle for any particular pulseInterval. * This callback receives three things: the pulseInterval associated with the * cycle, an array containing the items updated, and the synced current-time value * that was sent to all the items as update() was called. (Background: GoEngine * stores different lists for every different pulseInterval specified by animation * items. Usually users will stick to a single pulseInterval but at times it can * be beneficial to run some animations slower than others ? such as the readouts * in a spaceship game's cockpit which don't need to refresh as often and can free * up processing power for the game if they don't.)

* *

The list of updated items only includes items actually updated, which at * times can differ slightly from the items that have been added to GoEngine and * sent to the manager's reserve() method. (Background: when items are added to * GoEngine during its update cycle, it defers updating them until the next pulse * so as not to disrupt the cycle in progress.) Therefore, even though ILiveManager * extends IManager and contains reserve() and release() methods, * those methods are often not needed here, since you can filter and make use of * the incoming array of updated items on each update. This can also relieve such * managers from needing to store and manage complex handler lists (as * OverlapMonitor does).

* *

ILiveManager instances registered using GoEngine.addManager() * are stored in an ordered list. You can control the priority of updates in a * program by adding certain managers before others.

* * @see IManager * @see IManageable * @see org.goasap.GoEngine#addManager GoEngine.addManager() * * @author Moses Gunesch */ + public interface ILiveManager extends IManager { /** * GoEngine pings this function after each update() cycle for each pulse. * * @param pulseInterval The pulse interval for this update cycle (-1 is ENTER_FRAME) * @param handlers The list of handlers actually updated during this cycle * @param currentTime The clock time that was passed to items during update */ function onUpdate(pulseInterval:int, handlers:Array, currentTime : Number):void; } } \ No newline at end of file Modified: trunk/goasap/src_go/org/goasap/interfaces/IManager.as ============================================================================== --- trunk/goasap/src_go/org/goasap/interfaces/IManager.as (original) +++ trunk/goasap/src_go/org/goasap/interfaces/IManager.as Mon Jun 2 18:17:54 2008 @@ -1,3 +1,3 @@ /** * Copyright (c) 2007 Moses Gunesch * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ package org.goasap.interfaces { /** - * Makes an object compatible with GoEngine.addManager(). * *

Go items normally have no knowledge of each other. The Go system's * management layer provides a way to monitor and interact with some or * all active items at once. It is designed so that users can choose to * exclude all management from their projects to lighten filesize and * processor load, or can create and add new managers as needed for any * project. A simple manager/item contract is defined between this interface * and the IManageable interface.

* *

The tie-in is simple: GoEngine reports the adding and removal of all * items that implement the IManageable interface to all registered managers. * The end-user gets to choose which managers to instantiate and register * using GoEngine.addManager(). As the engine passes references * to each item as it is added, managers can store and manipulate these items * however they like. OverlapMonitor, for example, releases items with * conflicting target/property combinations as new items are added.

* *

To make sure that the filesize associated with your managers remains * compile-optional, only interfaces should be used as datatypes. It's especially * important that item classes don't import or make direct references to specific * manager classes, or those classes will always be compiled.

* *

Conventions

* *

There is a distinct difference in the Go system between managers and * utilities, although both typically work with batches of Go items. * Utilities are tools designed to be directly used by the developer at a project * level, such as a Sequence class for animation timelining. In contrast, managers * are self-sufficient entities that, once registered to GoEngine, operate in the * background without requiring any direct interaction at runtime.

* *

Managers can do whatever they want with items, as long as they operate strictly * via interfaces. When creating your own managers, be sure to document these things * so users understand all caveats. Utilities and active program code will be handling * the same items your manager does, so interactions need to be thought through and tested. * The general assumption is that managers can freely call releaseHandling() * on any item; the item should then dispatch a STOP event that can be listened for on * the utility side.

* *

Finally, it's important that managers operate as efficiently as possible. You can use * the open-source TweenBencher utility to test & optimize.

* *

Extending Management Capabilities

* *

The Go system only interacts with managers by telling them which items are being * added and removed (played or stopped, normally). For more complex managers, * like a hitTest routine, you may need to actively monitor items as they update. * LinearGo and other items can provide udpate callbacks to facilitate this. You can * also formally extend the manager/item contract by extending the IManager and * IManageable interfaces to open up new interactions between managers and items.

* *

Interface extensions can also be used as marker datatypes that don't contain any * custom methods. This enables your custom managers to sniff for a particular interface * type in order to determine which items to store, monitor, or alter. If it's possible * to avoid extending IManageable with new methods, you'll save the filesize of those * method implementations across sets of items ? As a general rule be as conservative * as possible in what you add to the item side beyond IManageable's methods.

* *

(The aforementioned issue is a potential weakness with this version of Go. However, * an alternative system of decorating or composititing this functionality in is hard to * conceive of, since items need to be able to report private, instance-level information.)

* * @see IManageable * @see org.goasap.managers.OverlapMonitor OverlapMonitor * @see org.goasap.GoEngine#addManager GoEngine.addManager * * @author Moses Gunesch */ + * Makes an object compatible with GoEngine.addManager() * [This section updated recently!]

*

What are managers?

* *

Tweens and other animation items are not aware of other items while they * run; by contrast, manager classes can monitor and interact with many active * items at once. OverlapMonitor, a manager shipped with GoASAP, * prevents situations like two different tween instances trying to animate the * x property of a single sprite at the same time. This type of conflict needs * a system-level manager that can look at multiple items as they operate. Managers * can be used to automate any general process within an animation system. * This sounds dry, but it can be a creative opportunity as well:? imagine a manager * that automatically motion-blurs targets based on their velocity, for example. * Working at the system level gives you power that you don't have at the GoItem level, * and opens up a new range of possibilites. For example, a custom game engine would * be built primarily at the management level.

* *

There is a distinct difference in the Go system between managers and * utilities, although both typically work with batches of Go items. Utilities * are tools designed to be directly used at a project level, such as a sequence or * animation syntax parser (even GoItems like tween classes are essentially * utilities). In contrast, managers are self-sufficient entities that, once registered * to GoEngine, operate in the background without requiring any direct * interaction at runtime.

* *

About Go's Decoupled Management system

* *

The downside of managers in general is that they can add overhead as they perform * their additional processes, slowing your system down. Prefab tween engines usually "bake" * management features into their core code, locking you into any processing cost incurred as * well as whichever set of features the author decided were important. GoASAP's management * layer is designed specifically to solve these problems, and is GoASAP's most unique * architectural feature. It leverages the centralized pulse engine as a registration hub * for any number of managers, then leaves it up to the end user which managers to register * per project.

* *

This layer stays optional at all levels: it is optional to make tweens or other * animation items manageable in the first place (by implementing IManageable), * but it is very easy to write your own custom managers (that implement IManager). * Then even after implementation, it still remains optional for the end-user whether to add * any particular manager to GoEngine at runtime. By choosing not to add any managers if they * aren't needed in a project, Go can stay ultimately streamlined and limit its footprint to * just code that is used. It's also very easy to create custom managers to meet the needs * of a challenging project. You can activate these custom tools at runtime this time, then * ignore them until needed again. This allows you to tie your custom program code very tightly * into your animation engine, but keeps those customizations neatly 'decoupled.'

* *

Go Manager types

* *

Go currently provides two manager interfaces to choose from, IManager and * ILiveManager. An IManager is notified every time any IManageable * item is added or removed from GoEngine. This is the interface used by OverlapMonitor * for example, which only needs to detect conflicts as new items are added. The second interface, * ILiveManager, is for situations where you want a manager to actively handle items * as they update.

* *

Implementing IManager

* *

This interface has two methods that are called by GoEngine, reserve() * and release(). The first method is called when any item that implements IManageable * is added to the engine, and the second is called when such an item is removed. This means that * instances of a tween class that implements IManageable, for example, can be * trapped by the manager while their play cycle is active. Managers can do whatever they want * with the items, but the IManageable interface ensures that they can always get * the active animation targets and properties from the item, determine property overlap * between items, and ask items to stop playing when necessary. There are no rules for what you * write in the reserve() or release() methods, except that you should not * call release() directly from reserve(), but instead ask an item to stop via * a IManageable.releaseHandling() call. GoEngine will call release() * on the manager once the item has truly been stopped.

* *

You can also extend IManageable to add special functionality that a manager might use * on an item, or even just to create a new marker datatype without adding any custom methods. This enables * your custom managers to sniff for a particular interface type in order to determine which items to store, * monitor, or alter. The general rule is that items like tweens are considered working code, so you might * end up changing the management implementations on different sets of tweens based on your project needs. * Regardless of implementation on the manageable side, managers will remain decoupled in that they need * to be registered into GoEngine to be compiled and used in a project. As a general rule * you should try to have managers and managed items only reference each other via interfaces so that no * classes are forced to be compiled until they are used directly in a project.

* * @see IManageable * @see org.goasap.managers.OverlapMonitor OverlapMonitor * @see org.goasap.GoEngine#addManager GoEngine.addManager * * @author Moses Gunesch */ public interface IManager { /** * GoEngine reporting that an IManageable is being added to its pulse list. * * @param handler IManageable to query */ function reserve(handler:IManageable):void; /** * GoEngine reporting that an IManageable is being removed from its pulse list. * *

This method should NOT directly stop the item, stopping an item results in * a release() call from GoEngine. This method should simply remove the item from * any internal lists and unsubscribe all listeners on the item.

*/ function release(handler:IManageable):void; } } Modified: trunk/goasap/src_go/org/goasap/items/GoItem.as ============================================================================== --- trunk/goasap/src_go/org/goasap/items/GoItem.as (original) +++ trunk/goasap/src_go/org/goasap/items/GoItem.as Mon Jun 2 18:17:54 2008 @@ -1,3 +1,3 @@ /** * Copyright (c) 2007 Moses Gunesch * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ package org.goasap.items { import org.goasap.GoEngine; import org.goasap.PlayableBase; import org.goasap.interfaces.IUpdatable; /** * Abstract base animation class for other base classes like LinearGo and PhysicsGo. * *

This class extends PlayableBase to add features common to any animation item, * either linear or physics (LinearGo and PhysicsGo both extend this class). * Animation items add themselves to GoEngine to run on a pulse, so the IUpdatable * interface is implemented here, although update() needs to be subclassed.

* *

Animation items should individually implement the standard useRounding * and useRelative options. Three user-accessible class default settings * are provided for those and pulseInterval, while play-state constants * live in the superclass PlayableBase.

* * @author Moses Gunesch */ - public class GoItem extends PlayableBase implements IUpdatable { // -== Settable Class Defaults ==- /** * Class default for the instance property pulseInterval. * *

The default value of 33 has proven to be more efficient than using GoEngine.ENTER_FRAME * although this may vary per computer. Use the open-source TweenBencher utility to run your own * tests. If your results differ significantly please post a comment to the Go mailing list.

* * @default 33 * @see #pulseInterval */ public static var defaultPulseInterval : Number = 33; // GoEngine.ENTER_FRAME; /** * Class default for the instance property useRounding. * @default false * @see #useRounding */ public static var defaultUseRounding : Boolean = false; /** * Class default for the instance property useRelative. * @default false * @see #useRelative */ public static var defaultUseRelative : Boolean = false; /** * Alters the play speed for instances of any subclass that factors * this value into its calculations, such as LinearGo. * *

A setting of 2 should result in half-speed animations, while a setting * of .5 should double animation speed. Note that changing this property at * runtime does not usually affect already-playing items.

* *

This property is a Go convention, and all subclasses of GoItem (on the * LinearGo base class level, but not on the item level extending LinearGo) * need to implement it individually.

* @default 1 */ public static var timeMultiplier : Number = 1; // -== Public Properties ==- /** * Required by IUpdatable: Defines the pulse on which update is called. * *

* Can be a number of milliseconds for Timer-based updates or * GoEngine.ENTER_FRAME (-1) for updates synced to the * Flash Player's framerate. If not set manually, the class * default defaultPulseInterval is adopted. *

* * @see #defaultPulseInterval * @see org.goasap.GoEngine#ENTER_FRAME GoEngine.ENTER_FRAME */ public function get pulseInterval() : int { return _pulse; } public function set pulseInterval(interval:int) : void { if (_state==STOPPED && (interval >= 0 || interval==GoEngine.ENTER_FRAME)) { _pulse = interval; } } /** * CONVENTION ALERT: This property is considered a Go convention, and subclasses must * implement it individually by calling the correctValue() method on all calculated values * before applying them to targets. * *

The correctValue method fixes NaN's as 0 and applies Math.round if useRounding is active.

* * @see correctValue() * @see LinearGo#onUpdate() */ public var useRounding : Boolean = defaultUseRounding; /** * CONVENTION ALERT: This property is considered a Go convention, and subclasses must implement * it individually. Indicates that values should be treated as relative instead of absolute. * *

When true, user-set values should be calculated as * relative to their existing value ("from" vs. "to"), when possible. * See an example in the documentation for LinearGo.start. *

*

* Items that handle more than one property at once, such as a bezier * curve, might want to implement a useRelative option for each property * instead of using this overall item property, which is included here * to define a convention for standard single-property items. *

* * @see #defaultUseRelative */ public var useRelative : Boolean = defaultUseRelative; // -== Protected Properties ==- /** * @private */ protected var _pulse : int = defaultPulseInterval; // -== Public Methods ==- /** * Constructor. */ public function GoItem() { super(); } /** * IMPORTANT: Subclasses need to implement this functionality * individually. When updating animation targets, always call * correctValue on results first. This corrects any * NaN's to 0 and applies Math.round if useRounding * is active. * *

For example, a LinearGo onUpdate method might contain:

*
		 * target[ prop ] = correctValue(start + (change * _position));
		 * 
* * @see #useRounding * @see #defaultUseRounding */ public function correctValue(value:Number):Number { if (isNaN(value)) return 0; if (useRounding) // thanks John Grden return value = ((value%1==0) ? value : ((value%1>=.5) ? int(value)+1 : int(value))); return value; } /** * Required by IUpdatable: Perform updates on a pulse. * *

The currentTime parameter enables tight visual syncing of groups of items. * To ensure the tightest possible synchronization, do not set any internal start-time * vars in the item until the first update() call is received, then set to the currentTime * provided by GoEngine. This ensures that groups of items added in a for-loop all have the * exact same start times, which may otherwise differ by a few milliseconds.

* * @param currentTime A clock time that should be used instead of getTimer * to store any start-time vars on the first update call * and for performing update calculations. The value is usually * no more than a few milliseconds different than getTimer, * but using it tightly syncs item groups visually. */ public function update(currentTime : Number) : void { // override this method. } } } \ No newline at end of file + public class GoItem extends PlayableBase implements IUpdatable { // -== Settable Class Defaults ==- /** * Class default for the instance property pulseInterval. * *

GoEngine.ENTER_FRAME seems to run the smoothest in real-world contexts. * The open-source TweenBencher utility shows that timer-based framerates like * 33 milliseconds can perform best for thousands of simultaneous animations, * but in practical contexts timer-based animations tend to stutter.

* * @default GoEngine.ENTER_FRAME * @see #pulseInterval */ public static var defaultPulseInterval : Number = GoEngine.ENTER_FRAME; /** * Class default for the instance property useRounding. * @default false * @see #useRounding */ public static var defaultUseRounding : Boolean = false; /** * Class default for the instance property useRelative. * @default false * @see #useRelative */ public static var defaultUseRelative : Boolean = false; /** * Alters the play speed for instances of any subclass that factors * this value into its calculations, such as LinearGo. * *

A setting of 2 should result in half-speed animations, while a setting * of .5 should double animation speed. Note that changing this property at * runtime does not usually affect already-playing items.

* *

This property is a Go convention, and all subclasses of GoItem (on the * LinearGo base class level, but not on the item level extending LinearGo) * need to implement it individually.

* @default 1 */ public static var timeMultiplier : Number = 1; // -== Public Properties ==- /** * Required by IUpdatable: Defines the pulse on which update is called. * *

* Can be a number of milliseconds for Timer-based updates or * GoEngine.ENTER_FRAME (-1) for updates synced to the * Flash Player's framerate. If not set manually, the class * default defaultPulseInterval is adopted. *

* * @see #defaultPulseInterval * @see org.goasap.GoEngine#ENTER_FRAME GoEngine.ENTER_FRAME */ public function get pulseInterval() : int { return _pulse; } public function set pulseInterval(interval:int) : void { if (_state==STOPPED && (interval >= 0 || interval==GoEngine.ENTER_FRAME)) { _pulse = interval; } } /** * CONVENTION ALERT: This property is considered a Go convention, and subclasses must * implement it individually by calling the correctValue() method on all calculated values * before applying them to targets. * *

The correctValue method fixes NaN's as 0 and applies Math.round if useRounding is active.

* * @see correctValue() * @see LinearGo#onUpdate() */ public var useRounding : Boolean = defaultUseRounding; /** * CONVENTION ALERT: This property is considered a Go convention, and subclasses must implement * it individually. Indicates that values should be treated as relative instead of absolute. * *

When true, user-set values should be calculated as * relative to their existing value ("from" vs. "to"), when possible. * See an example in the documentation for LinearGo.start. *

*

* Items that handle more than one property at once, such as a bezier * curve, might want to implement a useRelative option for each property * instead of using this overall item property, which is included here * to define a convention for standard single-property items. *

* * @see #defaultUseRelative */ public var useRelative : Boolean = defaultUseRelative; // -== Protected Properties ==- /** * @private */ protected var _pulse : int = defaultPulseInterval; // -== Public Methods ==- /** * Constructor. */ public function GoItem() { super(); } /** * IMPORTANT: Subclasses need to implement this functionality * individually. When updating animation targets, always call * correctValue on results first. This corrects any * NaN's to 0 and applies Math.round if useRounding * is active. * *

For example, a LinearGo onUpdate method might contain:

*
		 * target[ prop ] = correctValue(start + (change * _position));
		 * 
* * @see #useRounding * @see #defaultUseRounding */ public function correctValue(value:Number):Number { if (isNaN(value)) return 0; if (useRounding) // thanks John Grden return value = ((value%1==0) ? value : ((value%1>=.5) ? int(value)+1 : int(value))); return value; } /** * Required by IUpdatable: Perform updates on a pulse. * *

The currentTime parameter enables tight visual syncing of groups of items. * To ensure the tightest possible synchronization, do not set any internal start-time * vars in the item until the first update() call is received, then set to the currentTime * provided by GoEngine. This ensures that groups of items added in a for-loop all have the * exact same start times, which may otherwise differ by a few milliseconds.

* * @param currentTime A clock time that should be used instead of getTimer * to store any start-time vars on the first update call * and for performing update calculations. The value is usually * no more than a few milliseconds different than getTimer, * but using it tightly syncs item groups visually. */ public function update(currentTime : Number) : void { // override this method. } } } \ No newline at end of file Modified: trunk/goasap/src_go/org/goasap/managers/OverlapMonitor.as ============================================================================== --- trunk/goasap/src_go/org/goasap/managers/OverlapMonitor.as (original) +++ trunk/goasap/src_go/org/goasap/managers/OverlapMonitor.as Mon Jun 2 18:17:54 2008 @@ -1,4 +1 @@ -/** * Copyright (c) 2007 Moses Gunesch * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ package org.goasap.managers { import flash.utils.Dictionary; import org.goasap.interfaces.IManageable; import org.goasap.interfaces.IManager; /** - * Calls releaseHandling() on currently-active items when * property-handling overlap is detected (like two tweens trying to set * the same sprite's x property), as new items are added to GoEngine. * *

To activate this manager call the following line one time:

*
GoEngine.addManager( new OverlapMonitor() );
* * {In the game of Go, a superko is a rule that prevents a potentially * infinite competition - ko - over the same space.} * * @see org.goasap.interfaces.IManager IManager * @see org.goasap.interfaces.IManageable IManageable * @see org.goasap.GoEngine GoEngine * * @author Moses Gunesch - */ - public class OverlapMonitor implements IManager { /** * This manager uses a Dictionary with target objects as the index * values and an Array of handlers currently handling the target as * the stored values. Targets are indexed because they are the primary * point of overlap to check first. */ protected var handlers : Dictionary = new Dictionary(true); /** * Sets an IManageable as reserving its target/property combinations. * * @param handler IManageable to reserve */ public function reserve(handler:IManageable):void { var targs:Array = handler.getActiveTargets(); var props:Array = handler.getActiveProperties(); if (!targs || !props) return; if (targs.length==0 || props.length==0) return; // The dictionary is keyed by animation target objects, the most primary point of potential overlap. // Cycle through the targets handled by the incoming handler (often there's only one), // then inspect the handlers currently assigned to determine overlap. for each (var target:Object in targs) { // Case: incoming handler is the only one working with this target at this time. if (!handlers[ target ]) { handlers[ target ] = new Array(handler); continue; } // There is a matching target in the Dictionary. Each entry in the dictionary is an Array of // IManageable instances currently handling that target. var handlersForTarget:Array = (handlers[ target ] as Array); // Duplicate entries are not allowed in the handler lists. (Really we should return out here // since targets are not supposed to change during item play, but continue just to be sure.) if (handlersForTarget.indexOf(handler) > -1) continue; // Leave first so resulting release() doesn't destroy the array before we write to it. handlersForTarget.push( handler ); // Test all properties being handled on this target against existing handlers for this target. // If an overlap is reported, release the existing handler which is then responsible for stopping itself. for each (var handlerToTest:IManageable in handlersForTarget) { if (handlerToTest!=handler) if (handlerToTest.isHandling(props) == true) handlerToTest.releaseHandling(); } } } /** * Releases an IManageable from being monitored. Does not call releaseHandling() on instances, * since this method is called after an instance has already removed itself from the engine. * * @param handler The IManageable to remove from internal lists. */ public function release(handler:IManageable):void { for (var target:Object in handlers) { var handlerList:Array = (handlers[target] as Array); // Array entries are unique so we only have to remove one. var i:int =(handlerList.indexOf(handler)); if (i>-1) { handlerList.splice(i, 1); if (handlerList.length==0) delete handlers[ target ]; } } } } } \ No newline at end of file +? /** * Copyright (c) 2007 Moses Gunesch * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ package org.goasap.managers { import flash.utils.Dictionary; import org.goasap.interfaces.IManageable; import org.goasap.interfaces.IManager; /** * Calls releaseHandling() on currently-active items when * property-handling overlap is detected (like two tweens trying to set * the same sprite's x property), as new items are added to GoEngine. * *

To activate this manager call the following line one time:

*
GoEngine.addManager( new OverlapMonitor() );
* * {In the game of Go, a superko is a rule that prevents a potentially * infinite competition - ko - over the same space.} * * @see org.goasap.interfaces.IManager IManager * @see org.goasap.interfaces.IManageable IManageable * @see org.goasap.GoEngine GoEngine * * @author Moses Gunesch */ public class OverlapMonitor implements IManager { /** * A set of Dictionaries by target object. Targets are indexed * because they are the primary point of overlap to check first. */ protected var handlers : Dictionary = new Dictionary(false); /** * Tracks subdictionary lengths. */ protected var counts : Dictionary = new Dictionary(false); /** * Sets an IManageable as reserving its target/property combinations. * * @param handler IManageable to reserve */ public function reserve(handler:IManageable):void { // ======================================================================================= // Step-by-step: Items are 'reserved' or stored in a Dictionary. // When a new item says it's handling the same target as a stored item, the stored item // is asked whether the new item's properties conflict. If so, the old item is 'released' // from its duties. (Tip: 'handlers' here are GoItems like tweens, not functions.) // ======================================================================================= var targs:Array = handler.getActiveTargets(); var props:Array = handler.getActiveProperties(); if (!targs || !props || targs.length==0 || props.length==0) return; for each (var targ:Object in targs) { if (handlers[ targ ]==null) { // (I switched to using sub-dictionaries w/ counters, since it may be a hair faster than Array. // Strong keys are fine here since GoEngine stores and will release() all active items.) handlers[ targ ] = new Dictionary(false); handlers[ targ ][ handler ] = true; counts[ targ ] = 1; continue; } var targ_handlers: Dictionary = (handlers[ targ ] as Dictionary); // as in, 'active tweens handling a same Sprite' if (targ_handlers[ handler ]) continue; // safety (handler already reserved) // keep before isHandling() tests targ_handlers[ handler ] = true; counts[ targ ] ++; for (var other:Object in targ_handlers) { if (other!=handler) if ((other as IManageable).isHandling(props)) { // Ask each existing handler to report overlap. (other as IManageable).releaseHandling(); // Items should stop themselves on this call. // GoEngine will then call release() back on this class which will clear the item out. } } } } /** * Releases an IManageable from being monitored. Does not call releaseHandling() on instances, * since this method is called after an instance has already removed itself from the engine. * * @param handler The IManageable to remove from internal lists. */ public function release(handler:IManageable):void { var targs:Array = handler.getActiveTargets(); for each (var targ:Object in targs) { if (handlers[ targ ] && handlers[ targ ][ handler ]!=null) { delete handlers[ targ ][ handler ]; counts[ targ ] --; // don't alter this syntax. (Flex doesn't like --counts[targ]) if ( counts[ targ ] == 0 ) { delete handlers[ targ ]; delete counts[ targ ]; } } } } } } \ No newline at end of file From codesite-noreply at google.com Mon Jun 2 18:38:33 2008 From: codesite-noreply at google.com (codesite-noreply at google.com) Date: Mon, 02 Jun 2008 18:38:33 -0700 Subject: [Golist] [goasap commit] r42 - wiki Message-ID: <000e0cd2969491860c044eb92bba@google.com> Author: mosesoak Date: Mon Jun 2 18:38:22 2008 New Revision: 42 Modified: wiki/WhatsNewInVersion040.wiki Log: Edited wiki page through web user interface. Modified: wiki/WhatsNewInVersion040.wiki ============================================================================== --- wiki/WhatsNewInVersion040.wiki (original) +++ wiki/WhatsNewInVersion040.wiki Mon Jun 2 18:38:22 2008 @@ -1,12 +1,19 @@ This page is updated sporadically, for details click Source > Changes above. +*0.4.9 notes* +Improves GoASAP's management layer. + * All managers are now accessed by !GoEngine in the order they are added, so various duties can be carefully ordered. + * NEW INTERFACE: ILiveManager. !GoEngine has been altered so that any managers that implement this interface receive a special onUpdate() callback after each update cycle. + * !OverlapMonitor has been rewritten to use Dictionaries instead of Arrays to store handlers internally, and to correct an efficiency flaw in release(). + * Also: !GoItem.defaultPulseInterval has been set back to ENTER_FRAME. (While 33ms does perform faster on benchmarks with thousands of animations, ENTER_FRAME runs much smoother in practical contexts.) + *0.4.7 notes* * Added new Repeater & !LinearGoRepeater classes. * !LinearGo, !PlayableGroup and sequence classes now sport repeater instances. * Added new event types to !GoEvent and playable classes: PAUSE, RESUME and CYCLE. * useFrames support added to !LinearGo * id property of !PlayableBase changed to playableID (v0.4.8) to avoid conflicts, id was too generic. - * static _playRetainer property added to !PlayableBase for stashing refs to self during play cycle (v0.4.4) + * static __playRetainer property added to !PlayableBase for stashing refs to self during play cycle (v0.4.4) *0.4.2 notes* From moses at goasap.org Mon Jun 2 18:49:47 2008 From: moses at goasap.org (Moses Gunesch) Date: Mon, 2 Jun 2008 21:49:47 -0400 Subject: [Golist] GoASAP version 0.4.9 Message-ID: well I set the repository to report to this list. I don't mind the commit notices but the wiki updates being reported is a tad on the annoying side. We'll give it a try though. This update is pretty cool folks! I am really excited about Go's management layer, in fact am going to make it my focus at FlashBelt. I know that that has seemed pretty opaque so far. So, I've rewritten the docs for the Management Layer (start at the page for IManager). These docs are now in a more friendly tutorial style. Enjoy!! This rev also has a great new interface that lets you write "Live Managers" ? ones that are updated as animations run. I'm using it to write a 3D scene updater already. Big thanks to Donovan on this release. He noticed the efficiency issue in OverlapMonitor and figured out that ENTER_FRAME is smoothest for real world stuff. (This should fix the smoothness glitches people have been posting about recently by the way!) 0.4.9 notes Improves GoASAP's management layer. All managers are now accessed by GoEngine in the order they are added, so various duties can be carefully ordered. NEW INTERFACE: ILiveManager. GoEngine has been altered so that any managers that implement this interface receive a special onUpdate() callback after each update cycle. OverlapMonitor has been rewritten to use Dictionaries instead of Arrays to store handlers internally, and to correct an efficiency flaw in release(). Also: GoItem.defaultPulseInterval has been set back to ENTER_FRAME. (While 33ms does perform faster on benchmarks with thousands of animations, ENTER_FRAME runs much smoother in practical contexts.) -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080602/1eacfafa/attachment.html From moses at goasap.org Mon Jun 2 19:09:09 2008 From: moses at goasap.org (Moses Gunesch) Date: Mon, 2 Jun 2008 22:09:09 -0400 Subject: [Golist] Flashbelt In-Reply-To: <5be612720805271800x5b986eedj764645eb3a6c0bb@mail.gmail.com> References: <7C952B8C-90A4-432B-BCE2-C2BA7D74E66A@goasap.org> <483BC6E7.4060109@relivethefuture.com> <51645CFF-E6ED-43B7-AE23-95DAF7C4F40E@goasap.org> <483C2496.3020405@relivethefuture.com> <580612A1-CEBB-4626-9D67-AA262CCB03A2@goasap.org> <5be612720805271800x5b986eedj764645eb3a6c0bb@mail.gmail.com> Message-ID: Some exciting news: I will be joined on stage at FlashBelt by Donovan Adams of Scifi.com and Jud Holliday of ZAAZ! Donovan has been doing great work on HydroTween. It has a Tweener-like syntax plus sequencing, it's compact (one class) and does a load of fancy tricks including color, HSB, filters, 3D with automatic scene updating, start properties and more. HydroTween is already very flexible, you can tween groups and sequences as quick as you can say "Fuse." :-) Judd and Graeme have been taking a nearly opposite approach at ZAAZ, with a fully OO strictly-typed tween library (and sequence extensions), but no syntax parsers so far. Graeme's also been working with John Grden on expanding his Go3D library. When this library lands it's gonna be with a thud, and my guess is that it will become another standard in the Go community. Why I'm excited and honored to have these guys co-present with me is that their different approaches really illustrate the wide range of possibilities with Go. There is no wrong answer! With 2 guests I'll be hard pressed to get a word in myself but, after introducing the whys and wherefores of Go I hope to get a chance to talk a bit more about its killer decoupled management architecture. This is really what make Go very unique and so sexily flexible. While other kits "bake in" management features and lock you to them, this is a way to be able to infinitely expand the automated side of your animation tools and never even lock the end-user into using it at all. Management sounds dry but in fact it's a richly creative opportunity: For example I made an AutoBlurrer manager that adds horizontal and vertical blur to any moving object based on its velocity! The other point of excitement is just the killer lineup of speakers, one of the best I've seen at any conference. http://www.flashbelt.com/ - m From donovan at hydrotik.com Mon Jun 2 19:16:47 2008 From: donovan at hydrotik.com (donovan at hydrotik.com) Date: Mon, 02 Jun 2008 22:16:47 -0400 Subject: [Golist] HydroTween version 0.4.9 rev32 In-Reply-To: Message-ID: Hey everyone! In addition to Moses? kickin updates I have updated HydroTween. I posted the changes to the SVN but I can?t add a featured download yet with the source. I did however update my blog posting with the updated code. Many thanks to Moses for his help over the weekend. HydroTween now has the ability to pass start_ values. Currently this is working for non-matrix items. Image/Bitmap start values are on the way. http://blog.hydrotik.com/2008/05/13/go-048jg1-hydrotween-rev30-guide-source- code/ Download: http://blog.hydrotik.com/wp-content/HydroTween_rev32_049.zip -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080602/d1c406bb/attachment.html From moses at goasap.org Tue Jun 3 09:51:23 2008 From: moses at goasap.org (Moses Gunesch) Date: Tue, 3 Jun 2008 12:51:23 -0400 Subject: [Golist] GoASAP version 0.4.9 In-Reply-To: References: Message-ID: I'm thinking that I should start referring to the Management Layer as the Automation Layer which is just sexier and more descriptive. It really sets it apart from utilities. Utilities are tools for developers to use in code. Managers can automate any time-based process in the background. What do you think? m On Jun 2, 2008, at 9:49 PM, Moses Gunesch wrote: > well I set the repository to report to this list. I don't mind the > commit notices but the wiki updates being reported is a tad on the > annoying side. We'll give it a try though. > > This update is pretty cool folks! I am really excited about Go's > management layer, in fact am going to make it my focus at FlashBelt. > > I know that that has seemed pretty opaque so far. So, I've rewritten > the docs for the Management Layer (start at the page for IManager). > These docs are now in a more friendly tutorial style. Enjoy!! > > This rev also has a great new interface that lets you write "Live > Managers" ? ones that are updated as animations run. I'm using it to > write a 3D scene updater already. > > Big thanks to Donovan on this release. He noticed the efficiency > issue in OverlapMonitor and figured out that ENTER_FRAME is > smoothest for real world stuff. (This should fix the smoothness > glitches people have been posting about recently by the way!) > > 0.4.9 notes > > Improves GoASAP's management layer. > > All managers are now accessed by GoEngine in the order they are > added, so various duties can be carefully ordered. > NEW INTERFACE: ILiveManager. GoEngine has been altered so that any > managers that implement this interface receive a special onUpdate() > callback after each update cycle. > OverlapMonitor has been rewritten to use Dictionaries instead of > Arrays to store handlers internally, and to correct an efficiency > flaw in release(). > Also: GoItem.defaultPulseInterval has been set back to ENTER_FRAME. > (While 33ms does perform faster on benchmarks with thousands of > animations, ENTER_FRAME runs much smoother in practical contexts.) > _______________________________________________ > GoList mailing list > GoList at goasap.org > http://goasap.org/mailman/listinfo/golist_goasap.org -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080603/6fa6e1a6/attachment.html From moses at goasap.org Tue Jun 3 09:53:24 2008 From: moses at goasap.org (Moses Gunesch) Date: Tue, 3 Jun 2008 12:53:24 -0400 Subject: [Golist] Flashbelt In-Reply-To: <5be612720805271800x5b986eedj764645eb3a6c0bb@mail.gmail.com> References: <7C952B8C-90A4-432B-BCE2-C2BA7D74E66A@goasap.org> <483BC6E7.4060109@relivethefuture.com> <51645CFF-E6ED-43B7-AE23-95DAF7C4F40E@goasap.org> <483C2496.3020405@relivethefuture.com> <580612A1-CEBB-4626-9D67-AA262CCB03A2@goasap.org> <5be612720805271800x5b986eedj764645eb3a6c0bb@mail.gmail.com> Message-ID: Hey so, anyone have any demos they want me to feature at FlashBelt? Can be a website, an experiment, or any cool animation you've made with Go. moses (Martin, what about getting that music one hooked up with sound?) From donovan at hydrotik.com Tue Jun 3 11:40:34 2008 From: donovan at hydrotik.com (Donovan Adams) Date: Tue, 3 Jun 2008 14:40:34 -0400 Subject: [Golist] GoASAP version 0.4.9 Message-ID: <2be23df856c348739964c9d14a41383a@mail29.safesecureweb.com> I like it. I think it makes a clearer distinction of what they are doing. Managers gets thrown around loosely, I know I'm guilty of that myself. -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080603/a64334f0/attachment.html From flashdev at relivethefuture.com Thu Jun 5 01:26:31 2008 From: flashdev at relivethefuture.com (Martin Wood-Mitrovski) Date: Thu, 05 Jun 2008 10:26:31 +0200 Subject: [Golist] Flashbelt In-Reply-To: References: <7C952B8C-90A4-432B-BCE2-C2BA7D74E66A@goasap.org> <483BC6E7.4060109@relivethefuture.com> <51645CFF-E6ED-43B7-AE23-95DAF7C4F40E@goasap.org> <483C2496.3020405@relivethefuture.com> <580612A1-CEBB-4626-9D67-AA262CCB03A2@goasap.org> <5be612720805271800x5b986eedj764645eb3a6c0bb@mail.gmail.com> Message-ID: <4847A337.6090006@relivethefuture.com> Moses Gunesch wrote: > Hey so, anyone have any demos they want me to feature at FlashBelt? > > Can be a website, an experiment, or any cool animation you've made > with Go. > > moses > > > (Martin, what about getting that music one hooked up with sound?) i've been trying, i've been working on it but everything is conspiring against me, first i had no internet for about 5 days so i had a ton of work built up to deal with, and yesterday after about 4 hours of Max patching it froze, and now any time I load up the file I was building for the demo it crashes. So im back to square one, unless the Max people figure out the crash and fix my file. I'll still try and get something done..how long have i got? (realistically) martin. From moses at goasap.org Thu Jun 5 06:52:20 2008 From: moses at goasap.org (Moses Gunesch) Date: Thu, 5 Jun 2008 09:52:20 -0400 Subject: [Golist] Flashbelt In-Reply-To: <4847A337.6090006@relivethefuture.com> References: <7C952B8C-90A4-432B-BCE2-C2BA7D74E66A@goasap.org> <483BC6E7.4060109@relivethefuture.com> <51645CFF-E6ED-43B7-AE23-95DAF7C4F40E@goasap.org> <483C2496.3020405@relivethefuture.com> <580612A1-CEBB-4626-9D67-AA262CCB03A2@goasap.org> <5be612720805271800x5b986eedj764645eb3a6c0bb@mail.gmail.com> <4847A337.6090006@relivethefuture.com> Message-ID: <45AFFB34-C283-442D-A58B-580E329717CA@goasap.org> ah, sounds like a bust then since the talk is on Monday and I would really need the files this week. Sorry to hear that! On Jun 5, 2008, at 4:26 AM, Martin Wood-Mitrovski wrote: > > > Moses Gunesch wrote: >> Hey so, anyone have any demos they want me to feature at FlashBelt? >> >> Can be a website, an experiment, or any cool animation you've made >> with Go. >> >> moses >> >> >> (Martin, what about getting that music one hooked up with sound?) > > i've been trying, i've been working on it but everything is > conspiring against > me, first i had no internet for about 5 days so i had a ton of work > built up to > deal with, and yesterday after about 4 hours of Max patching it > froze, and now > any time I load up the file I was building for the demo it crashes. > > So im back to square one, unless the Max people figure out the crash > and fix my > file. > > I'll still try and get something done..how long have i got? > (realistically) > > martin. > > _______________________________________________ > GoList mailing list > GoList at goasap.org > http://goasap.org/mailman/listinfo/golist_goasap.org From joel at stranskydesign.com Thu Jun 5 14:55:53 2008 From: joel at stranskydesign.com (Joel Stransky) Date: Thu, 5 Jun 2008 14:55:53 -0700 Subject: [Golist] Flashbelt In-Reply-To: <45AFFB34-C283-442D-A58B-580E329717CA@goasap.org> References: <7C952B8C-90A4-432B-BCE2-C2BA7D74E66A@goasap.org> <483BC6E7.4060109@relivethefuture.com> <51645CFF-E6ED-43B7-AE23-95DAF7C4F40E@goasap.org> <483C2496.3020405@relivethefuture.com> <580612A1-CEBB-4626-9D67-AA262CCB03A2@goasap.org> <5be612720805271800x5b986eedj764645eb3a6c0bb@mail.gmail.com> <4847A337.6090006@relivethefuture.com> <45AFFB34-C283-442D-A58B-580E329717CA@goasap.org> Message-ID: <5be612720806051455y17c44e50v997ffcad137e50d@mail.gmail.com> I was really trying to get a vanishing point based z-tweener ready for the show man but I just couldn't get my head around GoItem in time. Extending LinearGo just felt cheap but the more I looked for the gears it controlled the more I realized it's just what I need. Now that I've torn the engine apart I can feel a little better about over-kill but I'm just not fluent enough to finish this week. :( thumbs up on the new managers, interface and commit updates btw. --Joel On Thu, Jun 5, 2008 at 6:52 AM, Moses Gunesch wrote: > ah, sounds like a bust then since the talk is on Monday and I would > really need the files this week. Sorry to hear that! > > > On Jun 5, 2008, at 4:26 AM, Martin Wood-Mitrovski wrote: > > > > > > > Moses Gunesch wrote: > >> Hey so, anyone have any demos they want me to feature at FlashBelt? > >> > >> Can be a website, an experiment, or any cool animation you've made > >> with Go. > >> > >> moses > >> > >> > >> (Martin, what about getting that music one hooked up with sound?) > > > > i've been trying, i've been working on it but everything is > > conspiring against > > me, first i had no internet for about 5 days so i had a ton of work > > built up to > > deal with, and yesterday after about 4 hours of Max patching it > > froze, and now > > any time I load up the file I was building for the demo it crashes. > > > > So im back to square one, unless the Max people figure out the crash > > and fix my > > file. > > > > I'll still try and get something done..how long have i got? > > (realistically) > > > > martin. > > > > _______________________________________________ > > GoList mailing list > > GoList at goasap.org > > http://goasap.org/mailman/listinfo/golist_goasap.org > > > _______________________________________________ > GoList mailing list > GoList at goasap.org > http://goasap.org/mailman/listinfo/golist_goasap.org > -- --Joel -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080605/1c77c54b/attachment.html From romuald at thoughtomatic.co.uk Fri Jun 6 04:09:23 2008 From: romuald at thoughtomatic.co.uk (Romuald Quantin) Date: Fri, 6 Jun 2008 12:09:23 +0100 Subject: [Golist] hydrotween + go vs tweener Message-ID: Hi Everyone, First of all, thanks Donovan and Moses to have a look at this issue. It is now working well as Hydrotween and OverlapMonitor have been updated (VERSION: HydroTween 0.4.9 rev32 (DA/MG REWRITE) / Go 0.4.9) As written in the SVN log: GoItem.defaultPulseInterval has been set back to ENTER_FRAME. While 33ms does perform faster on benchmarks with thousands of animations, ENTER_FRAME runs much smoother in practical contexts. Just to understand. Donovan told me to set the pulseInterval in Hydrotween to 1, and the result is a lot smoother. The default pulseInterval value is -1, what does this value mean? I understood well it is ms, so set to -1 bypass it to use another value? maybe a frame-based value? or maybe -1 means the pulse will be 33ms as describe in the SVN log? Romu _____ From: golist-bounces at goasap.org [mailto:golist-bounces at goasap.org] On Behalf Of Romuald Quantin Sent: 29 May 2008 15:06 To: GoList at goasap.org Subject: [Golist] hydrotween + go vs tweener Hi Guys, I made a small test (file included). I've already posted it but nobody answered, I renew my test with the last version of Tweener, Go and Hydrotween. I'm working on a project and it will use a tweener for the animations, I won't get stuck with a package, the users will be able to register the tweener they want to use, probably TweenLite, Tweener and Go+Hydrotween. To be honest, after seeing the benchmarks and the features, I would like to mainly use Go, but here's my problem. I made a test to compare the reactivity of the different package. Using Hydrotween and Tweener I animate a simple plane and a picture with rollover and rollout, I change the properties brightness, scale and rotate. Test it by opening the index.html, if you rollover the sprites, both will work as expected, but if you rollover and rollout very quickly several times to test the "reactivity of the engine", I can see that the Tweener one is a lot smoother. Here are the questions: 1 - Am I doing something wrong in my test? 2 - Can you see what I mean when I say Tweener is smoother? 3 - Is the problem coming from my test? 4 - Is the problem coming from Go? 5 - Is the problem coming from Hydrotween? 6 - Is the problem coming from the easing equation? 7 - is Hydrotween or Go parsing a big array or something that might make it less smooth when the engine start again the tween? 8 - Can I (or we) solve it? I don't want to shadow Go+Hydrotween at all, I'd like even to use it full time but I've got to get a good result. Can you please tell me what you think of that and if there's a solution or if you're going to have a look? Thanks for your time. Romuald www.soundstep.com -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080606/ee8ca59a/attachment.html From romuald at thoughtomatic.co.uk Fri Jun 6 04:15:59 2008 From: romuald at thoughtomatic.co.uk (Romuald Quantin) Date: Fri, 6 Jun 2008 12:15:59 +0100 Subject: [Golist] easing equations, Go and Hydrotween Message-ID: Other question. To use Hydrotween with easing equations such as Quadratic.easeOut, I need the fl.motion.easing right? Is there any way to include easing equations in Hydrotween or Go so I get rid of the package? I mean "include" by "register" them and use a string like in Fuse "easeOutQuad" or something like that? If not, is that a future feature? Romu -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080606/76487c98/attachment.html From donovan at hydrotik.com Fri Jun 6 07:28:07 2008 From: donovan at hydrotik.com (donovan at hydrotik.com) Date: Fri, 06 Jun 2008 10:28:07 -0400 Subject: [Golist] hydrotween + go vs tweener Message-ID: -1 is for setting to ENTER_FRAME Any positive integer will set it to Timer based with millesecond values On 6/6/08 7:09 AM, "Romuald Quantin" wrote: > Hi Everyone, > > First of all, thanks Donovan and Moses to have a look at this issue. > > It is now working well as Hydrotween and OverlapMonitor have been updated > (VERSION: HydroTween 0.4.9 rev32 (DA/MG REWRITE) / Go 0.4.9) > > As written in the SVN log: > GoItem.defaultPulseInterval has been set back to ENTER_FRAME. > While 33ms does perform faster on benchmarks with thousands of > animations, ENTER_FRAME runs much smoother in practical contexts. > > Just to understand? > > Donovan told me to set the pulseInterval in Hydrotween to 1, and the result is > a lot smoother. > > The default pulseInterval value is -1, what does this value mean? I understood > well it is ms, so set to -1 bypass it to use another value? maybe a > frame-based value? or maybe -1 means the pulse will be 33ms as describe in the > SVN log? > > Romu > > > > > > From: golist-bounces at goasap.org [mailto:golist-bounces at goasap.org] On Behalf > Of Romuald Quantin > Sent: 29 May 2008 15:06 > To: GoList at goasap.org > Subject: [Golist] hydrotween + go vs tweener > > Hi Guys, > > I made a small test (file included). I?ve already posted it but nobody > answered, I renew my test with the last version of Tweener, Go and Hydrotween. > > I?m working on a project and it will use a tweener for the animations, I won?t > get stuck with a package, the users will be able to register the tweener they > want to use, probably TweenLite, Tweener and Go+Hydrotween. > > To be honest, after seeing the benchmarks and the features, I would like to > mainly use Go, but here?s my problem. > > I made a test to compare the reactivity of the different package. Using > Hydrotween and Tweener I animate a simple plane and a picture with rollover > and rollout, I change the properties brightness, scale and rotate. > > Test it by opening the index.html, if you rollover the sprites, both will work > as expected, but if you rollover and rollout very quickly several times to > test the ?reactivity of the engine?, I can see that the Tweener one is a lot > smoother? > > Here are the questions: > > 1 - Am I doing something wrong in my test? > 2 - Can you see what I mean when I say Tweener is smoother? > 3 - Is the problem coming from my test? > 4 - Is the problem coming from Go? > 5 - Is the problem coming from Hydrotween? > 6 - Is the problem coming from the easing equation? > 7 - is Hydrotween or Go parsing a big array or something that might make it > less smooth when the engine start again the tween? > 8 - Can I (or we) solve it? > > I don?t want to shadow Go+Hydrotween at all, I?d like even to use it full time > but I?ve got to get a good result? Can you please tell me what you think of > that and if there?s a solution or if you?re going to have a look? > > Thanks for your time. > > Romuald > www.soundstep.com > > > > _______________________________________________ > GoList mailing list > GoList at goasap.org > http://goasap.org/mailman/listinfo/golist_goasap.org -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080606/6081b3f9/attachment-0001.html From donovan at hydrotik.com Fri Jun 6 07:35:01 2008 From: donovan at hydrotik.com (donovan at hydrotik.com) Date: Fri, 06 Jun 2008 10:35:01 -0400 Subject: [Golist] easing equations, Go and Hydrotween Message-ID: Yes you are correct. I have considered doing that, however the drawback to that is added file size if all of the equations are imported. Personally I am 50/50 on it. However because it is so easy to add an equation for a Tween without HydroTween containing imports to all the equations, I think that it?s an opportunity to cut a bit of the file size. I also think it fits in line with Moses? desire for Go to be adopted as an Adobe standard. This is one thing I would do based on a consensus, if there is strong desire for it, I?ll definitely change it to strings. On 6/6/08 7:15 AM, "Romuald Quantin" wrote: > Other question. > > To use Hydrotween with easing equations such as Quadratic.easeOut, I need the > fl.motion.easing right? > > Is there any way to include easing equations in Hydrotween or Go so I get rid > of the package? I mean ?include? by ?register? them and use a string like in > Fuse ?easeOutQuad? or something like that? > > If not, is that a future feature? > > Romu > > > > _______________________________________________ > GoList mailing list > GoList at goasap.org > http://goasap.org/mailman/listinfo/golist_goasap.org -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080606/7868a746/attachment.html From moses at goasap.org Fri Jun 6 07:59:08 2008 From: moses at goasap.org (Moses Gunesch) Date: Fri, 6 Jun 2008 10:59:08 -0400 Subject: [Golist] hydrotween + go vs tweener In-Reply-To: References: Message-ID: Romuald, ENTER_FRAME (-1) will give you the smoothest results in real-world interactive code such as your demo file. I don't recommend using a setting of 1, which is smooth but can easily back up the player by overclocking it. Your screen and the human eye work best at around 24-30 FPS so, just set your movie to one of those framerates and use enterframe. That allows the player to refresh animation as it is naturally refreshing its redraws, which is far more efficient than running thousands of calculations that are never even seen. Sorry about the confusion with the previous 33ms default, and thanks for helping us figure out that it was flawed. It is true that that setting runs faster in benchmarks but it may be because it "staggers" player processes; however it apparently also causes animation to hiccup in real world settings. Please bookmark the Go docs home page: http://www.goasap.org/docs/ Get comfy with referencing docs for questions like, what is a constant's value, that's just faster for you and others than posting such a question. But I am to blame for causing confusion on the default pulse, which went from -1 originally, to 33ms for a while, and now is back at -1. Sorry bout that but again thanks for your valuable input! :-) - moses On Jun 6, 2008, at 10:28 AM, donovan at hydrotik.com wrote: > -1 is for setting to ENTER_FRAME > > Any positive integer will set it to Timer based with millesecond > values > > > On 6/6/08 7:09 AM, "Romuald Quantin" > wrote: > >> Hi Everyone, >> >> First of all, thanks Donovan and Moses to have a look at this issue. >> >> It is now working well as Hydrotween and OverlapMonitor have been >> updated (VERSION: HydroTween 0.4.9 rev32 (DA/MG REWRITE) / Go 0.4.9) >> >> As written in the SVN log: >> GoItem.defaultPulseInterval has been set back to ENTER_FRAME. >> While 33ms does perform faster on benchmarks with thousands of >> animations, ENTER_FRAME runs much smoother in practical contexts. >> >> Just to understand? >> >> Donovan told me to set the pulseInterval in Hydrotween to 1, and >> the result is a lot smoother. >> >> The default pulseInterval value is -1, what does this value mean? I >> understood well it is ms, so set to -1 bypass it to use another >> value? maybe a frame-based value? or maybe -1 means the pulse will >> be 33ms as describe in the SVN log? >> >> Romu >> >> >> >> From: golist-bounces at goasap.org [mailto:golist-bounces at goasap.org] >> On Behalf Of Romuald Quantin >> Sent: 29 May 2008 15:06 >> To: GoList at goasap.org >> Subject: [Golist] hydrotween + go vs tweener >> >> Hi Guys, >> >> I made a small test (file included). I?ve already posted it but >> nobody answered, I renew my test with the last version of Tweener, >> Go and Hydrotween. >> >> I?m working on a project and it will use a tweener for the >> animations, I won?t get stuck with a package, the users will be >> able to register the tweener they want to use, probably TweenLite, >> Tweener and Go+Hydrotween. >> >> To be honest, after seeing the benchmarks and the features, I would >> like to mainly use Go, but here?s my problem. >> >> I made a test to compare the reactivity of the different package. >> Using Hydrotween and Tweener I animate a simple plane and a picture >> with rollover and rollout, I change the properties brightness, >> scale and rotate. >> >> Test it by opening the index.html, if you rollover the sprites, >> both will work as expected, but if you rollover and rollout very >> quickly several times to test the ?reactivity of the engine?, I can >> see that the Tweener one is a lot smoother? >> >> Here are the questions: >> >> 1 - Am I doing something wrong in my test? >> 2 - Can you see what I mean when I say Tweener is smoother? >> 3 - Is the problem coming from my test? >> 4 - Is the problem coming from Go? >> 5 - Is the problem coming from Hydrotween? >> 6 - Is the problem coming from the easing equation? >> 7 - is Hydrotween or Go parsing a big array or something that might >> make it less smooth when the engine start again the tween? >> 8 - Can I (or we) solve it? >> >> I don?t want to shadow Go+Hydrotween at all, I?d like even to use >> it full time but I?ve got to get a good result? Can you please tell >> me what you think of that and if there?s a solution or if you?re >> going to have a look? >> >> Thanks for your time. >> >> Romuald >> www.soundstep.com >> >> >> _______________________________________________ >> GoList mailing list >> GoList at goasap.org >> http://goasap.org/mailman/listinfo/golist_goasap.org > > _______________________________________________ > GoList mailing list > GoList at goasap.org > http://goasap.org/mailman/listinfo/golist_goasap.org -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080606/b55d3c21/attachment.html From moses at goasap.org Fri Jun 6 08:11:53 2008 From: moses at goasap.org (Moses Gunesch) Date: Fri, 6 Jun 2008 11:11:53 -0400 Subject: [Golist] easing equations, Go and Hydrotween In-Reply-To: References: Message-ID: <7F7C2960-5D40-461D-88E5-8CF51F32E76B@goasap.org> On Jun 6, 2008, at 10:35 AM, donovan at hydrotik.com wrote: > I also think it fits in line with Moses? desire for Go to be adopted > as an Adobe standard. Well just to clear the air I'm not actually hoping for Adobe to pick up Go. I'd like to see it succeed at the OS community level before any such considerations would be proposed. (My proposal to them for a standard was a different thing, it was for a complete animation system that could live outside all products and work with javascript, after effects, flash, flex. Go is more like a "voluntary AS3 animation standard" that could be adopted by the community at large as an alternative to an Adobe solution.) m -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080606/b37026e0/attachment.html From moses at goasap.org Fri Jun 6 08:17:21 2008 From: moses at goasap.org (Moses Gunesch) Date: Fri, 6 Jun 2008 11:17:21 -0400 Subject: [Golist] easing equations, Go and Hydrotween In-Reply-To: References: Message-ID: <6B36827E-7452-475F-92AD-30FA6DBF562A@goasap.org> >> To use Hydrotween with easing equations such as Quadratic.easeOut, >> I need the fl.motion.easing right? >> >> Is there any way to include easing equations in Hydrotween or Go so >> I get rid of the package? I mean ?include? by ?register? them and >> use a string like in Fuse ?easeOutQuad? or something like that? One of the things I would really like Adobe to standardize is just to make one convenient package for easing equations that would be used by Flash & Flex alike. It's annoying that they are scattered in 3 or 4 different places, it makes it really hard to port things around freely. I don't want to include easings with Go; that would just add to Adobe's redundancies on that front. You can do this a number of ways: Use a Flash easing package like fl.motion.easing when working in Flash or mx.effects.easing when working in Flex; or build a new easing package of your own (copy one of those and change the package path in each file); or port one over from another system like Tweener, as Grden did. Personally, in general I like leaving packages separate and using the defaults for Flash or Flex, not combining or porting. I find it more convenient to set al classpaths/ libraries one time (which is not even necessary for easings since they are in default directories), than to bother doing the combining and then trying to maintain one big hybrid directory. The only time this is inconvenient is when migrating code between Flash & Flex, so if you do that all the time you might consider one of the alternatives. Or maybe I am wrong on this, and I should create an org.goasap.easing package since Go is attempting to be that common hub location for standard animation elements. That logically makes sense; it just also goes against my general bias that it's silly for every animation bundle in the world to have another copy of the same functions. I'm torn but tend to lean toward staying lean, instead of doing something that adds to a what I see as a general clutter problem. - m On Jun 6, 2008, at 10:35 AM, donovan at hydrotik.com wrote: > Yes you are correct. > > I have considered doing that, however the drawback to that is added > file size if all of the equations are imported. > > Personally I am 50/50 on it. However because it is so easy to add an > equation for a Tween without HydroTween containing imports to all > the equations, I think that it?s an opportunity to cut a bit of the > file size. > > I also think it fits in line with Moses? desire for Go to be adopted > as an Adobe standard. > > This is one thing I would do based on a consensus, if there is > strong desire for it, I?ll definitely change it to strings. > > > On 6/6/08 7:15 AM, "Romuald Quantin" > wrote: > >> Other question. >> >> To use Hydrotween with easing equations such as Quadratic.easeOut, >> I need the fl.motion.easing right? >> >> Is there any way to include easing equations in Hydrotween or Go so >> I get rid of the package? I mean ?include? by ?register? them and >> use a string like in Fuse ?easeOutQuad? or something like that? >> >> If not, is that a future feature? >> >> Romu >> >> >> _______________________________________________ >> GoList mailing list >> GoList at goasap.org >> http://goasap.org/mailman/listinfo/golist_goasap.org > > _______________________________________________ > GoList mailing list > GoList at goasap.org > http://goasap.org/mailman/listinfo/golist_goasap.org -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080606/de24bc27/attachment-0001.html From neoriley at gmail.com Fri Jun 6 08:23:03 2008 From: neoriley at gmail.com (John Grden) Date: Fri, 6 Jun 2008 10:23:03 -0500 Subject: [Golist] easing equations, Go and Hydrotween In-Reply-To: <6B36827E-7452-475F-92AD-30FA6DBF562A@goasap.org> References: <6B36827E-7452-475F-92AD-30FA6DBF562A@goasap.org> Message-ID: <814c1ea20806060823r4a230c2cv356c44f4ab769a38@mail.gmail.com> I included it in Go3D cause I wanted something out of the box ;) I just borrowed Tweeners's Equations class and changed it to Easing and took out alll of Tweener's extra stuff. On Fri, Jun 6, 2008 at 10:17 AM, Moses Gunesch wrote: > To use Hydrotween with easing equations such as Quadratic.easeOut, I need > the fl.motion.easing right? > > Is there any way to include easing equations in Hydrotween or Go so I get > rid of the package? I mean "include" by "register" them and use a string > like in Fuse "easeOutQuad" or something like that? > > > One of the things I would *really* like Adobe to standardize is just to > make one convenient package for easing equations that would be used by Flash > & Flex alike. It's annoying that they are scattered in 3 or 4 different > places, it makes it really hard to port things around freely. > > I don't want to include easings with Go; that would just add to Adobe's > redundancies on that front. > > You can do this a number of ways: > Use a Flash easing package like fl.motion.easing when working in Flash > or mx.effects.easing when working in Flex; > or build a new easing package of your own (copy one of those and change the > package path in each file); > or port one over from another system like Tweener, as Grden did. > > Personally, in general I like leaving packages separate and using the > defaults for Flash or Flex, not combining or porting. I find it more > convenient to set al classpaths/ libraries one time (which is not even > necessary for easings since they are in default directories), than to bother > doing the combining and then trying to maintain one big hybrid directory. > The only time this is inconvenient is when migrating code between Flash & > Flex, so if you do that all the time you might consider one of the > alternatives. > > *Or maybe I am wrong on this,* and I should create an org.goasap.easing > package since Go is attempting to be that common hub location for standard > animation elements. That logically makes sense; it just also goes against my > general bias that it's silly for every animation bundle in the world to have > another copy of the same functions. I'm torn but tend to lean toward staying > lean, instead of doing something that adds to a what I see as a general > clutter problem. > > - m > > > On Jun 6, 2008, at 10:35 AM, donovan at hydrotik.com wrote: > > Yes you are correct. > > I have considered doing that, however the drawback to that is added file > size if all of the equations are imported. > > Personally I am 50/50 on it. However because it is so easy to add an > equation for a Tween without HydroTween containing imports to all the > equations, I think that it's an opportunity to cut a bit of the file size. > > I also think it fits in line with Moses' desire for Go to be adopted as an > Adobe standard. > > This is one thing I would do based on a consensus, if there is strong > desire for it, I'll definitely change it to strings. > > > On 6/6/08 7:15 AM, "Romuald Quantin" wrote: > > Other question. > > To use Hydrotween with easing equations such as Quadratic.easeOut, I need > the fl.motion.easing right? > > Is there any way to include easing equations in Hydrotween or Go so I get > rid of the package? I mean "include" by "register" them and use a string > like in Fuse "easeOutQuad" or something like that? > > If not, is that a future feature? > > Romu > > > ------------------------------ > _______________________________________________ > GoList mailing list > GoList at goasap.org > http://goasap.org/mailman/listinfo/golist_goasap.org > > > _______________________________________________ > GoList mailing list > GoList at goasap.org > http://goasap.org/mailman/listinfo/golist_goasap.org > > > > _______________________________________________ > GoList mailing list > GoList at goasap.org > http://goasap.org/mailman/listinfo/golist_goasap.org > > -- [ JPG ] -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080606/5462c9b4/attachment.html From graemea at zaaz.com Fri Jun 6 08:29:23 2008 From: graemea at zaaz.com (Asher Graeme) Date: Fri, 6 Jun 2008 08:29:23 -0700 Subject: [Golist] easing equations, Go and Hydrotween In-Reply-To: <6B36827E-7452-475F-92AD-30FA6DBF562A@goasap.org> References: <6B36827E-7452-475F-92AD-30FA6DBF562A@goasap.org> Message-ID: <2F59B389-BD02-43F8-9044-EDD844669D75@zaaz.com> Is it legal to distribute the fl.motion.easing and mx.effects.easing within our GoPlayground distributions? Graeme On Jun 6, 2008, at 8:17 AM, Moses Gunesch wrote: >>> To use Hydrotween with easing equations such as Quadratic.easeOut, >>> I need the fl.motion.easing right? >>> >>> Is there any way to include easing equations in Hydrotween or Go >>> so I get rid of the package? I mean ?include? by ?register? them >>> and use a string like in Fuse ?easeOutQuad? or something like that? > > > One of the things I would really like Adobe to standardize is just > to make one convenient package for easing equations that would be > used by Flash & Flex alike. It's annoying that they are scattered in > 3 or 4 different places, it makes it really hard to port things > around freely. > > I don't want to include easings with Go; that would just add to > Adobe's redundancies on that front. > > You can do this a number of ways: > Use a Flash easing package like fl.motion.easing when working in > Flash or mx.effects.easing when working in Flex; > or build a new easing package of your own (copy one of those and > change the package path in each file); > or port one over from another system like Tweener, as Grden did. > > Personally, in general I like leaving packages separate and using > the defaults for Flash or Flex, not combining or porting. I find it > more convenient to set al classpaths/ libraries one time (which is > not even necessary for easings since they are in default > directories), than to bother doing the combining and then trying to > maintain one big hybrid directory. The only time this is > inconvenient is when migrating code between Flash & Flex, so if you > do that all the time you might consider one of the alternatives. > > Or maybe I am wrong on this, and I should create an > org.goasap.easing package since Go is attempting to be that common > hub location for standard animation elements. That logically makes > sense; it just also goes against my general bias that it's silly for > every animation bundle in the world to have another copy of the same > functions. I'm torn but tend to lean toward staying lean, instead of > doing something that adds to a what I see as a general clutter > problem. > > - m > > > On Jun 6, 2008, at 10:35 AM, donovan at hydrotik.com wrote: > >> Yes you are correct. >> >> I have considered doing that, however the drawback to that is added >> file size if all of the equations are imported. >> >> Personally I am 50/50 on it. However because it is so easy to add >> an equation for a Tween without HydroTween containing imports to >> all the equations, I think that it?s an opportunity to cut a bit of >> the file size. >> >> I also think it fits in line with Moses? desire for Go to be >> adopted as an Adobe standard. >> >> This is one thing I would do based on a consensus, if there is >> strong desire for it, I?ll definitely change it to strings. >> >> >> On 6/6/08 7:15 AM, "Romuald Quantin" >> wrote: >> >>> Other question. >>> >>> To use Hydrotween with easing equations such as Quadratic.easeOut, >>> I need the fl.motion.easing right? >>> >>> Is there any way to include easing equations in Hydrotween or Go >>> so I get rid of the package? I mean ?include? by ?register? them >>> and use a string like in Fuse ?easeOutQuad? or something like that? >>> >>> If not, is that a future feature? >>> >>> Romu >>> >>> >>> _______________________________________________ >>> GoList mailing list >>> GoList at goasap.org >>> http://goasap.org/mailman/listinfo/golist_goasap.org >> >> _______________________________________________ >> GoList mailing list >> GoList at goasap.org >> http://goasap.org/mailman/listinfo/golist_goasap.org > > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080606/3b88ee5d/attachment.html From flashdev at relivethefuture.com Fri Jun 6 08:33:31 2008 From: flashdev at relivethefuture.com (Martin Wood-Mitrovski) Date: Fri, 06 Jun 2008 17:33:31 +0200 Subject: [Golist] easing equations, Go and Hydrotween In-Reply-To: <6B36827E-7452-475F-92AD-30FA6DBF562A@goasap.org> References: <6B36827E-7452-475F-92AD-30FA6DBF562A@goasap.org> Message-ID: <484958CB.4040405@relivethefuture.com> > *Or maybe I am wrong on this,* and I should create an org.goasap.easing > package since Go is attempting to be that common hub location for > standard animation elements. That logically makes sense; it just also > goes against my general bias that it's silly for every animation bundle > in the world to have another copy of the same functions. I'm torn but > tend to lean toward staying lean, instead of doing something that adds > to a what I see as a general clutter problem. i would say dont include them, keep the dependencies of the core library to a minimum. it only took me a few minutes to make my own 'EasingPack' which just gives me an easy way to flick through a set of easing equations. :) From moses at goasap.org Fri Jun 6 08:38:30 2008 From: moses at goasap.org (Moses Gunesch) Date: Fri, 6 Jun 2008 11:38:30 -0400 Subject: [Golist] easing equations, Go and Hydrotween In-Reply-To: <2F59B389-BD02-43F8-9044-EDD844669D75@zaaz.com> References: <6B36827E-7452-475F-92AD-30FA6DBF562A@goasap.org> <2F59B389-BD02-43F8-9044-EDD844669D75@zaaz.com> Message-ID: <1FC04A7E-0367-4F32-94F5-93C73DFD4746@goasap.org> Not to redistro their official classes I don't think. But these easing equations are used by everyone and Adobe is not uptight about it if you just make your own easing package, strip out their official stuff but clearly attribute the correct copyrights. m On Jun 6, 2008, at 11:29 AM, Asher Graeme wrote: > Is it legal to distribute the fl.motion.easing and mx.effects.easing > within our GoPlayground distributions? > > Graeme > From flashdev at relivethefuture.com Fri Jun 6 09:19:45 2008 From: flashdev at relivethefuture.com (Martin Wood-Mitrovski) Date: Fri, 06 Jun 2008 18:19:45 +0200 Subject: [Golist] Flashbelt In-Reply-To: <45AFFB34-C283-442D-A58B-580E329717CA@goasap.org> References: <7C952B8C-90A4-432B-BCE2-C2BA7D74E66A@goasap.org> <483BC6E7.4060109@relivethefuture.com> <51645CFF-E6ED-43B7-AE23-95DAF7C4F40E@goasap.org> <483C2496.3020405@relivethefuture.com> <580612A1-CEBB-4626-9D67-AA262CCB03A2@goasap.org> <5be612720805271800x5b986eedj764645eb3a6c0bb@mail.gmail.com> <4847A337.6090006@relivethefuture.com> <45AFFB34-C283-442D-A58B-580E329717CA@goasap.org> Message-ID: <484963A1.5060302@relivethefuture.com> Moses Gunesch wrote: > ah, sounds like a bust then since the talk is on Monday and I would > really need the files this week. Sorry to hear that! ok, i've got something together :) http://relivethefuture.com/code/flash/mdk-flashbelt-demo.zip Its built on PPC but I hope it'll work on Intel. I also built a windows version if anyone wants it : http://relivethefuture.com/code/flash/mdk-flashbelt-demo-win.zip In the zip is a standalone application built from Max/MSP 5 and the flash stuff (swf, html file, swfobject) Some instructions for the swf : At the top left is the 'toolbar' for creating new box types (only 3 at the moment,but more to come soon). At the right is the box inspector for altering parameters and configuring the nodes in a box. When you create a box you'll see it has its own set of controls, from left to right : Inspect : Show box params / nodes in inspector. Close : remove the box Zoom : zoom a single box to the whole work area Then the last 2 function as a mini-transport for IPlayable's Play / Pause and a Stop button (although just play / pause would probably be sufficient in this case) ---- Max Application The Max application responds to a set of OSC messages : /trigger1 : restart sample 1 /g1 : sample 1 grain time /ps1 : sample 1 pitch and speed then the same for sample 2, /trigger2, /g2, /ps2 /vol : sample volumes /reverb : reverb amount /delay : delay amount /filter : filter cutoff (only affects sample 2) So, how do you make it do stuff? 1. run the Max app, that will start the OSC server on port 4444. If you click the speaker button at the bottom you should hear a couple of samples playing. 2. open the app.html (or just the swf) 3. connect some nodes to messages :) As an example, try this 1. create a new path box 2. click in the grey box for the path to create some nodes 3. in the inspector select the 'nodes' panel For a path the first node sends messages from the animated node which follows the path, the second node is for sending triggers when it cycles, 4. In the first node message box (it says /box/pos) change that to /ps2 and click the checkbox next to it to activate it. You should immediately start to hear some changes. 5. Create a new path, doing the same as before except change the /box/pos message to /ps1 (and activate the message) Now both samples are having the pitch and speed modulated by the animated node. 6. Create an orbit box and make some nodes. Now the trick with this is to pause it while you configure the nodes you want, i normally make 3 connected nodes and use the last one as a modulator. Also its easier if you zoom in to select the node you want (the + button beneath the box) Try setting one of those (moving) nodes to /reverb and there you go, some kind of unholy electronic noise controlled by flash :) Then you can just add boxes, create nodes and set them to send the various messages, /delay, /filter, /vol, /g1 & /g2 etc.. what can be interesting is once you have a load of stuff running is to pause all the boxes so you get an idea of what happens when flash isnt sending any data. thats about it. I realise its pretty complicated, especially because i havent got any way of saving / loading setups in the flash app yet. So if you dont want to stand there fiddling around while doing the presentation I totally understand. Of course all the stuff is free for anyone to download and all the source code is available so what i'll do later tonight is to write a wiki page with instructions and post the link here when im done. A lot of the code also lives here (as3 OSC library, java HTTP OSC server, Max/MSP java objects etc) http://www.assembla.com/wiki/show/osclib this is because i've tried to keep just the core 'go related' code in the playground, but i'll write all this up later :) anyway, good luck, hope it goes well for all of you who are involved. and anyone who tries it out let me know if you have any problems and i'll see what i can do, i've not built standalone Max/MSP apps before so I wouldnt be suprised if something goes wrong. thanks, Martin. From moses at goasap.org Fri Jun 6 09:46:48 2008 From: moses at goasap.org (Moses Gunesch) Date: Fri, 6 Jun 2008 12:46:48 -0400 Subject: [Golist] Flashbelt In-Reply-To: <484963A1.5060302@relivethefuture.com> References: <7C952B8C-90A4-432B-BCE2-C2BA7D74E66A@goasap.org> <483BC6E7.4060109@relivethefuture.com> <51645CFF-E6ED-43B7-AE23-95DAF7C4F40E@goasap.org> <483C2496.3020405@relivethefuture.com> <580612A1-CEBB-4626-9D67-AA262CCB03A2@goasap.org> <5be612720805271800x5b986eedj764645eb3a6c0bb@mail.gmail.com> <4847A337.6090006@relivethefuture.com> <45AFFB34-C283-442D-A58B-580E329717CA@goasap.org> <484963A1.5060302@relivethefuture.com> Message-ID: Wow this is freaky cool shit bro. I'm running too short on time now to suss all of this out and play with it. Do you have time to do a very short video recording of it in action? m On Jun 6, 2008, at 12:19 PM, Martin Wood-Mitrovski wrote: > > > Moses Gunesch wrote: >> ah, sounds like a bust then since the talk is on Monday and I would >> really need the files this week. Sorry to hear that! > > ok, i've got something together :) > > http://relivethefuture.com/code/flash/mdk-flashbelt-demo.zip > > Its built on PPC but I hope it'll work on Intel. > > I also built a windows version if anyone wants it : > > http://relivethefuture.com/code/flash/mdk-flashbelt-demo-win.zip > > In the zip is a standalone application built from Max/MSP 5 and the > flash stuff > (swf, html file, swfobject) > > Some instructions for the swf : > > At the top left is the 'toolbar' for creating new box types (only 3 > at the > moment,but more to come soon). > > At the right is the box inspector for altering parameters and > configuring the > nodes in a box. > > When you create a box you'll see it has its own set of controls, > from left to > right : > > Inspect : Show box params / nodes in inspector. > Close : remove the box > Zoom : zoom a single box to the whole work area > > Then the last 2 function as a mini-transport for IPlayable's > > Play / Pause and a Stop button (although just play / pause would > probably be > sufficient in this case) > > ---- > > Max Application > > The Max application responds to a set of OSC messages : > > /trigger1 : restart sample 1 > /g1 : sample 1 grain time > /ps1 : sample 1 pitch and speed > > then the same for sample 2, /trigger2, /g2, /ps2 > > /vol : sample volumes > /reverb : reverb amount > /delay : delay amount > /filter : filter cutoff (only affects sample 2) > > So, how do you make it do stuff? > > 1. run the Max app, that will start the OSC server on port 4444. If > you click > the speaker button at the bottom you should hear a couple of samples > playing. > > 2. open the app.html (or just the swf) > > 3. connect some nodes to messages :) > > As an example, try this > > 1. create a new path box > 2. click in the grey box for the path to create some nodes > 3. in the inspector select the 'nodes' panel > > For a path the first node sends messages from the animated node > which follows > the path, the second node is for sending triggers when it cycles, > > 4. In the first node message box (it says /box/pos) change that to / > ps2 and > click the checkbox next to it to activate it. > You should immediately start to hear some changes. > 5. Create a new path, doing the same as before except change the / > box/pos > message to /ps1 (and activate the message) > > Now both samples are having the pitch and speed modulated by the > animated node. > > 6. Create an orbit box and make some nodes. > > Now the trick with this is to pause it while you configure the nodes > you want, i > normally make 3 connected nodes and use the last one as a modulator. > Also its > easier if you zoom in to select the node you want (the + button > beneath the box) > > Try setting one of those (moving) nodes to /reverb > > and there you go, some kind of unholy electronic noise controlled by > flash :) > > Then you can just add boxes, create nodes and set them to send the > various > messages, /delay, /filter, /vol, /g1 & /g2 etc.. > > what can be interesting is once you have a load of stuff running is > to pause all > the boxes so you get an idea of what happens when flash isnt sending > any data. > > thats about it. > > I realise its pretty complicated, especially because i havent got > any way of > saving / loading setups in the flash app yet. So if you dont want to > stand there > fiddling around while doing the presentation I totally understand. > > Of course all the stuff is free for anyone to download and all the > source code > is available so what i'll do later tonight is to write a wiki page > with > instructions and post the link here when im done. > > A lot of the code also lives here (as3 OSC library, java HTTP OSC > server, > Max/MSP java objects etc) > > http://www.assembla.com/wiki/show/osclib > > this is because i've tried to keep just the core 'go related' code > in the > playground, but i'll write all this up later :) > > anyway, good luck, hope it goes well for all of you who are involved. > > and anyone who tries it out let me know if you have any problems and > i'll see > what i can do, i've not built standalone Max/MSP apps before so I > wouldnt be > suprised if something goes wrong. > > thanks, > > Martin. > > > _______________________________________________ > GoList mailing list > GoList at goasap.org > http://goasap.org/mailman/listinfo/golist_goasap.org From flashdev at relivethefuture.com Fri Jun 6 10:00:52 2008 From: flashdev at relivethefuture.com (Martin Wood-Mitrovski) Date: Fri, 06 Jun 2008 19:00:52 +0200 Subject: [Golist] Flashbelt In-Reply-To: References: <7C952B8C-90A4-432B-BCE2-C2BA7D74E66A@goasap.org> <483BC6E7.4060109@relivethefuture.com> <51645CFF-E6ED-43B7-AE23-95DAF7C4F40E@goasap.org> <483C2496.3020405@relivethefuture.com> <580612A1-CEBB-4626-9D67-AA262CCB03A2@goasap.org> <5be612720805271800x5b986eedj764645eb3a6c0bb@mail.gmail.com> <4847A337.6090006@relivethefuture.com> <45AFFB34-C283-442D-A58B-580E329717CA@goasap.org> <484963A1.5060302@relivethefuture.com> Message-ID: <48496D44.60300@relivethefuture.com> Moses Gunesch wrote: > Wow this is freaky cool shit bro. :) thanks, its starting to come together. > > I'm running too short on time now to suss all of this out and play > with it. I thought as much, its not very presentation friendly in its current form. > Do you have time to do a very short video recording of it in > action? no problem, i'll get it done later and upload it. martin. From moses at goasap.org Sat Jun 7 12:56:12 2008 From: moses at goasap.org (Moses Gunesch) Date: Sat, 7 Jun 2008 15:56:12 -0400 Subject: [Golist] Flashbelt In-Reply-To: <48496D44.60300@relivethefuture.com> References: <7C952B8C-90A4-432B-BCE2-C2BA7D74E66A@goasap.org> <483BC6E7.4060109@relivethefuture.com> <51645CFF-E6ED-43B7-AE23-95DAF7C4F40E@goasap.org> <483C2496.3020405@relivethefuture.com> <580612A1-CEBB-4626-9D67-AA262CCB03A2@goasap.org> <5be612720805271800x5b986eedj764645eb3a6c0bb@mail.gmail.com> <4847A337.6090006@relivethefuture.com> <45AFFB34-C283-442D-A58B-580E329717CA@goasap.org> <484963A1.5060302@relivethefuture.com> <48496D44.60300@relivethefuture.com> Message-ID: <4AD1DE9E-F36E-40E6-A944-D36D96023FFD@goasap.org> Hey martin, If your video clip is short and sweet, I might show it at FlashBelt! Please get it to me as soon as you can though since today is my last day to prepare materials. :-) On Jun 6, 2008, at 1:00 PM, Martin Wood-Mitrovski wrote: >> >> Do you have time to do a very short video recording of it in >> action? > > no problem, i'll get it done later and upload it. > From graemea at zaaz.com Mon Jun 9 08:37:04 2008 From: graemea at zaaz.com (Asher Graeme) Date: Mon, 9 Jun 2008 08:37:04 -0700 Subject: [Golist] ZAAZ Go Library Message-ID: A new release to start your week: As Moses mentioned in his email last week we have been building a library here at ZAAZ. Today we are releasing the first classes and examples from this library, with many to follow shortly as we wrap up testing and example creation. The ZAAZ Go Library is a suite of classes built upon the the GoASAP platform that addresses the needs of animation, sequencing and other related tasks within AS3. Our goal is to create a object-oriented, strongly-typed library that is light weight, standardized, intuitive and easily expandable. The library allows you to quickly create complex sequences of animations that are easy to read and work with. Your projects use only the classes you need, keeping the file size down. Within the library you will find classes to meet your most common needs as well as others to handle more abstract situations. As we identify needs and dream up new possibilities we will release them to the library. The library can be downloaded from the GoASAP Playground SVN server now. We are having a few issues uploading the .zip version to the Playground, but once that is resolved you will be able to get that as well. You can read more about the library here. http://code.google.com/p/goplayground/wiki/ZAAZ_Go_Library If you have any questions or suggestions feel free to send feedback to flashdev at zaaz.com Enjoy. Graeme -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080609/3222a30c/attachment.html From moses at goasap.org Tue Jun 10 01:32:19 2008 From: moses at goasap.org (Moses Gunesch) Date: Tue, 10 Jun 2008 03:32:19 -0500 Subject: [Golist] Flashbelt In-Reply-To: <4AD1DE9E-F36E-40E6-A944-D36D96023FFD@goasap.org> References: <7C952B8C-90A4-432B-BCE2-C2BA7D74E66A@goasap.org> <483BC6E7.4060109@relivethefuture.com> <51645CFF-E6ED-43B7-AE23-95DAF7C4F40E@goasap.org> <483C2496.3020405@relivethefuture.com> <580612A1-CEBB-4626-9D67-AA262CCB03A2@goasap.org> <5be612720805271800x5b986eedj764645eb3a6c0bb@mail.gmail.com> <4847A337.6090006@relivethefuture.com> <45AFFB34-C283-442D-A58B-580E329717CA@goasap.org> <484963A1.5060302@relivethefuture.com> <48496D44.60300@relivethefuture.com> <4AD1DE9E-F36E-40E6-A944-D36D96023FFD@goasap.org> Message-ID: Flashbelt is a total blast so far! Our pres went great, many thanks to my co-presenters Jud and Donovan. I'll give a more thorough rundown later but all i have to say is that if this much has happened by end of Day 1, I'm not sure if I'll survive the fun to day 3. Seriously, it's a blast! m From newsl at analogdesign.ch Tue Jun 10 01:48:45 2008 From: newsl at analogdesign.ch (Cedric M. analogdesign) Date: Tue, 10 Jun 2008 10:48:45 +0200 Subject: [Golist] Flashbelt In-Reply-To: Message-ID: Hello Moses, Happy that the pres was a success! Congratulations ;) Looking forward to having more feedback about it! Enjoyyyyyy upcoming days! ;) Best regards. Cedric M. (aka maddec) Interactive Creator Adobe Flash/Flex/AIR Specialist Since 1998 ---------------------------------------------------- http://analogdesign.ch http://analogdesign.ch/blog visual & interactive communication ---------------------------------------------------- >-----Message d'origine----- >De : golist-bounces at goasap.org >[mailto:golist-bounces at goasap.org] De la part de Moses Gunesch >Envoy? : mardi, 10. juin 2008 10:32 >? : Mailing list for the Go ActionScript Animation Platform >Objet : Re: [Golist] Flashbelt > >Flashbelt is a total blast so far! Our pres went great, many >thanks to >my co-presenters Jud and Donovan. I'll give a more thorough rundown >later but all i have to say is that if this much has happened by end >of Day 1, I'm not sure if I'll survive the fun to day 3. Seriously, >it's a blast! > >m > >_______________________________________________ >GoList mailing list >GoList at goasap.org >http://goasap.org/mailman/listinfo/golist_goasap.org > From scolella at qorvis.com Tue Jun 10 05:01:44 2008 From: scolella at qorvis.com (Shane Colella) Date: Tue, 10 Jun 2008 08:01:44 -0400 Subject: [Golist] Hydro Sequencing Message-ID: <500B4B2EAFED524A81251CBAF8355A2F0B29C572@dca01exsvr01.qorvisnet.com> Howdy Group, I was trying to build a sequence in HydroTween by pushing objects into the sequence from a loop that loads different movieclips to no avail this morning. I'm wondering if any of the gurus here could help. What would be the most efficient and best practice to build a sequence on the fly? I had done this in the past with fuse but it doesn't seem to work the way I think it should,... Here is how I have last tried so far var sequence1:SequenceCA = HydroTween.sequence(); (the following is inside the function that plays every time a new item has been pushed onto arrThumbs) var tmpMC:MovieClip = _arrThumbs[i] as MovieClip; sequence1.push({target:tmpMC, scaleX:1, scaleY:1, alpha:1, easing:Quartic.easeIn}); then I call this function after all my thumbnails have loaded public function startThumbIntro():void { sequence1.start(); } Any one that can shed some light on this process would be great,... Thanks Hope you cats are having fun at flashBelt.... Shane Michael Colella -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080610/df678649/attachment.html From pv3d at eplay.de Tue Jun 10 05:21:56 2008 From: pv3d at eplay.de (toby) Date: Tue, 10 Jun 2008 14:21:56 +0200 Subject: [Golist] Hydro Sequencing In-Reply-To: <500B4B2EAFED524A81251CBAF8355A2F0B29C572@dca01exsvr01.qorvisnet.com> References: <500B4B2EAFED524A81251CBAF8355A2F0B29C572@dca01exsvr01.qorvisnet.com> Message-ID: <484E71E4.7040704@eplay.de> Don't know much about Hydrotween, but apparently sequence calls parseSequence and then starts the sequence. As parseSequence expects an Array, you could create a temporary Array and then call parseSequence (or sequence, for that matter), passing the Array as an argument: var tempArray:Array = new Array(); tempArray.push({target:tmpMC, scaleX:1, scaleY:1, alpha:1, easing:Quartic.easeIn}); ... seq1 = HydroTween.parseSequence(tempArray); Don't know if there is a more elegant way of doing this. HTH Toby Shane Colella wrote: > > Howdy Group, > > I was trying to build a sequence in HydroTween by pushing objects into > the sequence from a loop that loads different movieclips to no avail > this morning. > > I?m wondering if any of the gurus here could help. > > What would be the most efficient and best practice to build a sequence > on the fly? I had done this in the past with fuse but it doesn?t seem > to work the way I think it should,? > > Here is how I have last tried so far > > var sequence1:SequenceCA = HydroTween.sequence(); > > (the following is inside the function that plays every time a new item > has been pushed onto arrThumbs) > > var tmpMC:MovieClip = _arrThumbs[i] as MovieClip; > > sequence1.push({target:tmpMC, scaleX:1, scaleY:1, alpha:1, > easing:Quartic.easeIn}); > > then I call this function after all my thumbnails have loaded > > public function startThumbIntro():void { > > sequence1.start(); > > } > > Any one that can shed some light on this process would be great,? > > Thanks > > Hope you cats are having fun at flashBelt?. > > Shane Michael Colella > > ------------------------------------------------------------------------ > > _______________________________________________ > GoList mailing list > GoList at goasap.org > http://goasap.org/mailman/listinfo/golist_goasap.org > From pv3d at eplay.de Tue Jun 10 05:23:34 2008 From: pv3d at eplay.de (toby) Date: Tue, 10 Jun 2008 14:23:34 +0200 Subject: [Golist] Cancelling a sequence w/ HydroTween In-Reply-To: <500B4B2EAFED524A81251CBAF8355A2F0B29C572@dca01exsvr01.qorvisnet.com> References: <500B4B2EAFED524A81251CBAF8355A2F0B29C572@dca01exsvr01.qorvisnet.com> Message-ID: <484E7246.2050508@eplay.de> Hi there, Is there an easy way of aborting a sequence completely and deleting all its steps so it can be reused? Wondering... Toby From donovan at hydrotik.com Tue Jun 10 08:52:36 2008 From: donovan at hydrotik.com (donovan at hydrotik.com) Date: Tue, 10 Jun 2008 11:52:36 -0400 Subject: [Golist] Hydro Info + FlashBelt In-Reply-To: <500B4B2EAFED524A81251CBAF8355A2F0B29C572@dca01exsvr01.qorvisnet.com> Message-ID: Been having a blast here at Flashbelt. Great response from everyone and it?s been excellent seeing old faces and meeting new ones. Once again thanks to Moses for letting me be a part of his presentation. Even before the presentation, creating documentation has been on the top of my list of things to do. I plan on doing this right away when I get back. First off here are the files including the source from my part of the presentation. The presentation itself has been included as well. http://blog.hydrotik.com/2008/06/08/flashbelt-2008-animation-to-go-hydrotwee n-papervision3d/ In the meantime here is some useful info for using the sequencing part of HydroTween. var segOver : SequenceCA = HydroTween.parseSequence( [ {target:bg, width:300, brightness:-.5, duration:ANIMATION_TIME, easing:EASING}, {target:arrow, alpha:1, x:40, duration:ANIMATION_TIME, easing:EASING}, {target:tf, x:50, alpha:1, duration:ANIMATION_TIME, easing:EASING}, {target:item, alpha:1, scaleX:1.2, scaleY:1.2, y:_posArray[i], duration:ANIMATION_TIME, easing:EASING} ] ); seqOver.start(); To build a sequence then automatically start it you can use the shortcut: HydroTween.sequence(); If you wish to stop the sequence you just call: seqOver.stop(); Insert an item in the sequence at a specified index: seqOver.addStepAt({}, 0); Insert an item at the end of a sequence: seqOver.addStep({}); Pause a sqeuence: seqOver.pause(); Resume a sequence: seqOver.resume(); Skip to a specific item in a sequence: seqOver.skipTo(2); Remove a specific item in a sequence: seqOver.removeStepAt(1); I will move these over to the FlashBelt post in sometime today just so it?s in a specific spot. On 6/10/08 8:01 AM, "Shane Colella" wrote: > > Howdy Group, > > I was trying to build a sequence in HydroTween by pushing objects > into the sequence from a loop that loads different movieclips to no avail this > morning. > > I?m wondering if any of the gurus here could help. > > What would be the most efficient and best practice to build a > sequence on the fly? I had done this in the past with fuse but it doesn?t > seem to work the way I think it should,? > > Here is how I have last tried so far > > var sequence1:SequenceCA = HydroTween.sequence(); > > (the following is inside the function that plays every time a new item has > been pushed onto arrThumbs) > > var tmpMC:MovieClip = _arrThumbs[i] as MovieClip; > sequence1.push({target:tmpMC, scaleX:1, scaleY:1, alpha:1, > easing:Quartic.easeIn}); > > then I call this function after all my thumbnails have loaded > public function startThumbIntro():void { > sequence1.start(); > } > > > Any one that can shed some light on this process would be great,? > > Thanks > Hope you cats are having fun at flashBelt?. > > > Shane Michael Colella > > > > > _______________________________________________ > GoList mailing list > GoList at goasap.org > http://goasap.org/mailman/listinfo/golist_goasap.org -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080610/23c6343b/attachment-0001.html From romuald at thoughtomatic.co.uk Tue Jun 10 09:38:18 2008 From: romuald at thoughtomatic.co.uk (Romuald Quantin) Date: Tue, 10 Jun 2008 17:38:18 +0100 Subject: [Golist] Hydro Info + FlashBelt In-Reply-To: Message-ID: That's great. Happy to see you that enthusiastic :-) Very good work. By the way, on your blog two 404 if you didn't see: http://blog.hydrotik.com/wp-content/flashbelt2008/fuse.htm http://blog.hydrotik.com/wp-content/flashbelt2008/papervision.htm Keep the good work up, what's the next step for Hydrotween? Romu _____ From: golist-bounces at goasap.org [mailto:golist-bounces at goasap.org] On Behalf Of donovan at hydrotik.com Sent: 10 June 2008 16:53 To: Mailing list for the Go ActionScript Animation Platform Subject: [Golist] Hydro Info + FlashBelt Been having a blast here at Flashbelt. Great response from everyone and it's been excellent seeing old faces and meeting new ones. Once again thanks to Moses for letting me be a part of his presentation. Even before the presentation, creating documentation has been on the top of my list of things to do. I plan on doing this right away when I get back. First off here are the files including the source from my part of the presentation. The presentation itself has been included as well. http://blog.hydrotik.com/2008/06/08/flashbelt-2008-animation-to-go-hydrotwee n-papervision3d/ In the meantime here is some useful info for using the sequencing part of HydroTween. var segOver : SequenceCA = HydroTween.parseSequence( [ {target:bg, width:300, brightness:-.5, duration:ANIMATION_TIME, easing:EASING}, {target:arrow, alpha:1, x:40, duration:ANIMATION_TIME, easing:EASING}, {target:tf, x:50, alpha:1, duration:ANIMATION_TIME, easing:EASING}, {target:item, alpha:1, scaleX:1.2, scaleY:1.2, y:_posArray[i], duration:ANIMATION_TIME, easing:EASING} ] ); seqOver.start(); To build a sequence then automatically start it you can use the shortcut: HydroTween.sequence(); If you wish to stop the sequence you just call: seqOver.stop(); Insert an item in the sequence at a specified index: seqOver.addStepAt({}, 0); Insert an item at the end of a sequence: seqOver.addStep({}); Pause a sqeuence: seqOver.pause(); Resume a sequence: seqOver.resume(); Skip to a specific item in a sequence: seqOver.skipTo(2); Remove a specific item in a sequence: seqOver.removeStepAt(1); I will move these over to the FlashBelt post in sometime today just so it's in a specific spot. On 6/10/08 8:01 AM, "Shane Colella" wrote: Howdy Group, I was trying to build a sequence in HydroTween by pushing objects into the sequence from a loop that loads different movieclips to no avail this morning. I'm wondering if any of the gurus here could help. What would be the most efficient and best practice to build a sequence on the fly? I had done this in the past with fuse but it doesn't seem to work the way I think it should,. Here is how I have last tried so far var sequence1:SequenceCA = HydroTween.sequence(); (the following is inside the function that plays every time a new item has been pushed onto arrThumbs) var tmpMC:MovieClip = _arrThumbs[i] as MovieClip; sequence1.push({target:tmpMC, scaleX:1, scaleY:1, alpha:1, easing:Quartic.easeIn}); then I call this function after all my thumbnails have loaded public function startThumbIntro():void { sequence1.start(); } Any one that can shed some light on this process would be great,. Thanks Hope you cats are having fun at flashBelt.. Shane Michael Colella _____ _______________________________________________ GoList mailing list GoList at goasap.org http://goasap.org/mailman/listinfo/golist_goasap.org -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080610/582235af/attachment.html From scolella at qorvis.com Tue Jun 10 11:18:09 2008 From: scolella at qorvis.com (Shane Colella) Date: Tue, 10 Jun 2008 14:18:09 -0400 Subject: [Golist] sequencing Message-ID: <500B4B2EAFED524A81251CBAF8355A2F0B29C8FC@dca01exsvr01.qorvisnet.com> Re: To build a sequence then automatically start it you can use the shortcut: HydroTween.sequence(); If you wish to stop the sequence you just call: seqOver.stop(); Insert an item in the sequence at a specified index: seqOver.addStepAt({}, 0); Insert an item at the end of a sequence: seqOver.addStep({}); Pause a sqeuence: seqOver.pause(); Resume a sequence: seqOver.resume(); Skip to a specific item in a sequence: seqOver.skipTo(2); Remove a specific item in a sequence: seqOver.removeStepAt(1); Just what I needed, thanks Donovan, can't wait to see the new docs. Shane Michael Colella -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080610/18b3c8c8/attachment.html From moses at goasap.org Tue Jun 10 11:27:00 2008 From: moses at goasap.org (Moses Gunesch) Date: Tue, 10 Jun 2008 13:27:00 -0500 Subject: [Golist] Cancelling a sequence w/ HydroTween In-Reply-To: <484E7246.2050508@eplay.de> References: <500B4B2EAFED524A81251CBAF8355A2F0B29C572@dca01exsvr01.qorvisnet.com> <484E7246.2050508@eplay.de> Message-ID: <685EA01E-80B2-45AB-A3F6-4B35E4657B06@goasap.org> Sure! Just call yoursequence.stop(), then do yoursequence.steps = new Array(); to clear its steps array. :-) On Jun 10, 2008, at 7:23 AM, toby wrote: > Hi there, > > Is there an easy way of aborting a sequence completely and deleting > all > its steps so it can be reused? > > Wondering... > Toby > > _______________________________________________ > GoList mailing list > GoList at goasap.org > http://goasap.org/mailman/listinfo/golist_goasap.org -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080610/0fb5c0fa/attachment.html From donovan at hydrotik.com Tue Jun 10 15:30:50 2008 From: donovan at hydrotik.com (donovan at hydrotik.com) Date: Tue, 10 Jun 2008 18:30:50 -0400 Subject: [Golist] Hydro Info + FlashBelt Message-ID: Thanks for the heads up.. I fixed the links:) On 6/10/08 12:38 PM, "Romuald Quantin" wrote: > That?s great. Happy to see you that enthusiastic J > > Very good work. > > By the way, on your blog two 404 if you didn?t see: > http://blog.hydrotik.com/wp-content/flashbelt2008/fuse.htm > http://blog.hydrotik.com/wp-content/flashbelt2008/papervision.htm > > Keep the good work up, what?s the next step for Hydrotween? > > Romu > > > > From: golist-bounces at goasap.org [mailto:golist-bounces at goasap.org] On Behalf > Of donovan at hydrotik.com > Sent: 10 June 2008 16:53 > To: Mailing list for the Go ActionScript Animation Platform > Subject: [Golist] Hydro Info + FlashBelt > > Been having a blast here at Flashbelt. Great response from everyone and it?s > been excellent seeing old faces and meeting new ones. Once again thanks to > Moses for letting me be a part of his presentation. Even before the > presentation, creating documentation has been on the top of my list of things > to do. I plan on doing this right away when I get back. First off here are the > files including the source from my part of the presentation. The presentation > itself has been included as well. > > http://blog.hydrotik.com/2008/06/08/flashbelt-2008-animation-to-go-hydrotween- > papervision3d/ > > > > > In the meantime here is some useful info for using the sequencing part of > HydroTween. > > > var segOver : SequenceCA = HydroTween.parseSequence( [ > {target:bg, width:300, brightness:-.5, duration:ANIMATION_TIME, > easing:EASING}, {target:arrow, alpha:1, x:40, > duration:ANIMATION_TIME, easing:EASING}, {target:tf, > x:50, alpha:1, duration:ANIMATION_TIME, easing:EASING}, > {target:item, alpha:1, scaleX:1.2, scaleY:1.2, y:_posArray[i], > duration:ANIMATION_TIME, easing:EASING} > ] ); > seqOver.start(); > > > To build a sequence then automatically start it you can use the shortcut: > HydroTween.sequence(); > > > If you wish to stop the sequence you just call: > seqOver.stop(); > > Insert an item in the sequence at a specified index: > seqOver.addStepAt({}, 0); > > Insert an item at the end of a sequence: > seqOver.addStep({}); > > Pause a sqeuence: > seqOver.pause(); > Resume a sequence: > seqOver.resume(); > Skip to a specific item in a sequence: > seqOver.skipTo(2); > Remove a specific item in a sequence: > seqOver.removeStepAt(1); > > > I will move these over to the FlashBelt post in sometime today just so it?s in > a specific spot. > > > > > > > > > > > On 6/10/08 8:01 AM, "Shane Colella" wrote: > > Howdy Group, > > I was trying to build a sequence in HydroTween by pushing objects > into the sequence from a loop that loads different movieclips to no avail this > morning. > > I?m wondering if any of the gurus here could help. > > What would be the most efficient and best practice to build a > sequence on the fly? I had done this in the past with fuse but it doesn?t > seem to work the way I think it should,? > > Here is how I have last tried so far > > var sequence1:SequenceCA = HydroTween.sequence(); > > (the following is inside the function that plays every time a new item has > been pushed onto arrThumbs) > > var tmpMC:MovieClip = _arrThumbs[i] as MovieClip; > sequence1.push({target:tmpMC, scaleX:1, scaleY:1, alpha:1, > easing:Quartic.easeIn}); > > then I call this function after all my thumbnails have loaded > public function startThumbIntro():void { > sequence1.start(); > } > > > Any one that can shed some light on this process would be great,? > > Thanks > Hope you cats are having fun at flashBelt?. > > > Shane Michael Colella > > > > _______________________________________________ > GoList mailing list > GoList at goasap.org > http://goasap.org/mailman/listinfo/golist_goasap.org > > > > _______________________________________________ > GoList mailing list > GoList at goasap.org > http://goasap.org/mailman/listinfo/golist_goasap.org -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080610/58321267/attachment.html From donovan at hydrotik.com Tue Jun 10 15:57:26 2008 From: donovan at hydrotik.com (donovan at hydrotik.com) Date: Tue, 10 Jun 2008 18:57:26 -0400 Subject: [Golist] HydroTween Sequence Callbacks and Fix In-Reply-To: Message-ID: Hi Dana, no problem contacting me directly. You can also post to the GO list. More then likely I will respond, although it's possible you might get an answer faster:) Turns out you found a little bug in the callback sequencing! I made the fix to the typo and uploaded the change to the SVN on go playground. I also updated the FlashBelt Presentation source download. You can add the object property "func": var seqOver : SequenceCA = HydroTween.parseSequence( [ {target:bg, width:300, brightness:-.5, duration:ANIMATION_TIME, easing:EASING}, {target:arrow, alpha:1, x:40, duration:ANIMATION_TIME, easing:EASING}, {target:tf, x:50, alpha:1, duration:ANIMATION_TIME, easing:EASING}, {target:item, alpha:1, scaleX:1.2, scaleY:1.2, y:_posArray[i], duration:ANIMATION_TIME, easing:EASING, func:function():void{trace("Done");}} ] ); seqOver.start(); This might not be the greatest example since we are using an array of sequence objects which are being triggered at once, but you still get the idea. I posted this to the list to update them on the fix as well as include the reference. This is another thing I will add to the upcoming documentation. I also plan on adding a more user friendly object property for passing arguments instead of using a nested closure. Thanks again! On 6/10/08 1:57 PM, "Dana Roberts" wrote: > Hello, > > I have a question about HydroTween and am not sure if I should be emailing > you or if there is a better place to post questions? Let me know if there > is a forum or something that is better for these types of questions. > > Is there a way to add a callback within an animation sequence? > > Thanks > > Dana Roberts > ttdsroberts at hotmail.com > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080610/eb795613/attachment.html From pv3d at eplay.de Tue Jun 10 22:37:18 2008 From: pv3d at eplay.de (toby) Date: Wed, 11 Jun 2008 07:37:18 +0200 Subject: [Golist] Cancelling a sequence w/ HydroTween In-Reply-To: <685EA01E-80B2-45AB-A3F6-4B35E4657B06@goasap.org> References: <500B4B2EAFED524A81251CBAF8355A2F0B29C572@dca01exsvr01.qorvisnet.com> <484E7246.2050508@eplay.de> <685EA01E-80B2-45AB-A3F6-4B35E4657B06@goasap.org> Message-ID: <484F648E.6040801@eplay.de> Moses, Great, thank you. One of these days I'll have to look at all that code. :) Bye, Toby Moses Gunesch wrote: > Sure! Just call yoursequence.stop(), then do yoursequence.steps = new > Array(); to clear its steps array. > > :-) > > On Jun 10, 2008, at 7:23 AM, toby wrote: > >> Hi there, >> >> Is there an easy way of aborting a sequence completely and deleting all >> its steps so it can be reused? >> >> Wondering... >> Toby >> >> _______________________________________________ >> GoList mailing list >> GoList at goasap.org >> http://goasap.org/mailman/listinfo/golist_goasap.org > > ------------------------------------------------------------------------ > > _______________________________________________ > GoList mailing list > GoList at goasap.org > http://goasap.org/mailman/listinfo/golist_goasap.org > From cadete at bigote7.com Wed Jun 18 11:54:21 2008 From: cadete at bigote7.com (Cadete B7) Date: Wed, 18 Jun 2008 14:54:21 -0400 Subject: [Golist] sequencing through a set of tweens... Message-ID: <4FEE7E4F-2002-4A23-8CCA-54DBB4C124F7@bigote7.com> i'm new to go... this is my first post... if you wanted to tween a set of SequenceCA's, what would be a good way to go about it? or tween the values in an array in general? say for instance you had several columns comprised of stacks of colored bars... each column is its own entity, with a list of tweens (one for each bar it contains)... and you want to be able to play/ pause/reset the tweens by creating one marionette-like tween. seems like a simple problem, but i always feel like i'm taking an unnecessarily circuitous approach. thanks, - Wilbur -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080618/51ed68f6/attachment.html From judh at ZAAZ.com Wed Jun 18 12:49:05 2008 From: judh at ZAAZ.com (Jud Holliday) Date: Wed, 18 Jun 2008 12:49:05 -0700 Subject: [Golist] sequencing through a set of tweens... In-Reply-To: <4FEE7E4F-2002-4A23-8CCA-54DBB4C124F7@bigote7.com> References: <4FEE7E4F-2002-4A23-8CCA-54DBB4C124F7@bigote7.com> Message-ID: <329B3D4270DFFB49BE7B4F2B0307D1317C70E7FD3C@zulu.zaaz.com> Hi Wilbur, Are you saying you have a number of Sequences created and you want to start them in a particular order/offset? In other words create a sequence to play your sequences? If that is what you are looking for, I think essentially what you are asking is how to call a function as one of the steps in a sequence. I actually created a class as part of the ZAAZ Go Library which allows for simple sequencing of function calls which you may be interested in. It is called CallbackTrigger. Below is an example. Maybe some other people will jump in with some other ideas of ways to approach it as well. var column1Seq:SequenceCA = new SequenceCA(); column1Seq.addStep(new YourTween()); column1Seq.addStep(new YourTween()); var column2Seq:SequenceCA = new SequenceCA(); column2Seq.addStep(new YourTween()); column2Seq.addStep(new YourTween()); var column3Seq:SequenceCA = new SequenceCA(); column3Seq.addStep(new YourTween()); column3Seq.addStep(new YourTween()); var controlSeq:SequenceCA = new SequenceCA(); //tells column1 sequence to start playing controlSeq.addStep(new CallbackTrigger(column1Seq.start)); //tells column2 sequence to start playing after a delay of .5 seconds controlSeq.addStep(new CallbackTrigger(column2Seq.start, .5), true); //tells column3 sequence to start playing. Since we are not adding this //to the last step it won't start until the first two steps are done controlSeq.addStep(new CallbackTrigger(column2Seq.start)); controlSeq.start(); Hopefully I'm understanding your question. If not feel free to correct or clarify. If you want to download or check out the class you can get it from the playground. http://code.google.com/p/goplayground/downloads/list or via SVN as well Thanks, -Jud From: golist-bounces at goasap.org [mailto:golist-bounces at goasap.org] On Behalf Of Cadete B7 Sent: Wednesday, June 18, 2008 11:54 AM To: Mailing list for the Go ActionScript Animation Platform Subject: [Golist] sequencing through a set of tweens... i'm new to go... this is my first post... if you wanted to tween a set of SequenceCA's, what would be a good way to go about it? or tween the values in an array in general? say for instance you had several columns comprised of stacks of colored bars... each column is its own entity, with a list of tweens (one for each bar it contains)... and you want to be able to play/pause/reset the tweens by creating one marionette-like tween. seems like a simple problem, but i always feel like i'm taking an unnecessarily circuitous approach. thanks, - Wilbur -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080618/de5fe810/attachment.html From cadete at bigote7.com Wed Jun 18 14:03:13 2008 From: cadete at bigote7.com (Cadete B7) Date: Wed, 18 Jun 2008 17:03:13 -0400 Subject: [Golist] sequencing through a set of tweens... In-Reply-To: <329B3D4270DFFB49BE7B4F2B0307D1317C70E7FD3C@zulu.zaaz.com> References: <4FEE7E4F-2002-4A23-8CCA-54DBB4C124F7@bigote7.com> <329B3D4270DFFB49BE7B4F2B0307D1317C70E7FD3C@zulu.zaaz.com> Message-ID: <30881150-FE9D-48AD-8A93-FABED1F91E80@bigote7.com> yes!!! that's exactly what i'm looking for... i'll check it out. thanks. - Wilbur On Jun 18, 2008, at 3:49 PM, Jud Holliday wrote: > Are you saying you have a number of Sequences created and you want > to start them in a particular order/offset? In other words create a > sequence to play your sequences? -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080618/4e867e97/attachment.html From moses at goasap.org Thu Jun 19 00:22:52 2008 From: moses at goasap.org (Moses Gunesch) Date: Thu, 19 Jun 2008 00:22:52 -0700 Subject: [Golist] sequencing through a set of tweens... In-Reply-To: <30881150-FE9D-48AD-8A93-FABED1F91E80@bigote7.com> References: <4FEE7E4F-2002-4A23-8CCA-54DBB4C124F7@bigote7.com> <329B3D4270DFFB49BE7B4F2B0307D1317C70E7FD3C@zulu.zaaz.com> <30881150-FE9D-48AD-8A93-FABED1F91E80@bigote7.com> Message-ID: <9F0549F3-825D-4B1F-AC59-A69A3631357E@goasap.org> Why not just add the other sequence as a step? (Sequences accept any IPlayable ? groups, sequences, tweens etc. ? as steps.) moses On Jun 18, 2008, at 2:03 PM, Cadete B7 wrote: > yes!!! that's exactly what i'm looking for... > > i'll check it out. thanks. > > - Wilbur > > On Jun 18, 2008, at 3:49 PM, Jud Holliday wrote: > >> Are you saying you have a number of Sequences created and you want >> to start them in a particular order/offset? In other words create a >> sequence to play your sequences? > > _______________________________________________ > GoList mailing list > GoList at goasap.org > http://goasap.org/mailman/listinfo/golist_goasap.org -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080619/3415314e/attachment.html From judh at ZAAZ.com Thu Jun 19 08:32:10 2008 From: judh at ZAAZ.com (Jud Holliday) Date: Thu, 19 Jun 2008 08:32:10 -0700 Subject: [Golist] sequencing through a set of tweens... In-Reply-To: <9F0549F3-825D-4B1F-AC59-A69A3631357E@goasap.org> References: <4FEE7E4F-2002-4A23-8CCA-54DBB4C124F7@bigote7.com> <329B3D4270DFFB49BE7B4F2B0307D1317C70E7FD3C@zulu.zaaz.com> <30881150-FE9D-48AD-8A93-FABED1F91E80@bigote7.com> <9F0549F3-825D-4B1F-AC59-A69A3631357E@goasap.org> Message-ID: <329B3D4270DFFB49BE7B4F2B0307D1317C70E7FD9F@zulu.zaaz.com> So then you would control timing using the advance property? Yep, that's probably the better way in that it doesn't require any extra classes. Maybe a bit more verbose, but still pretty easy. So the previous code example would be changed to look something like this: var column1Seq:SequenceCA = new SequenceCA(); column1Seq.addStep(new YourTween()); column1Seq.addStep(new YourTween()); var column2Seq:SequenceCA = new SequenceCA(); column2Seq.addStep(new YourTween()); column2Seq.addStep(new YourTween()); var column3Seq:SequenceCA = new SequenceCA(); column3Seq.addStep(new YourTween()); column3Seq.addStep(new YourTween()); var controlSeq:SequenceCA = new SequenceCA(); controlSeq.addStep( column1Seq ); //advances after .5 secs controlSeq.lastStep.advance = new OnDurationComplete(.5); controlSeq.addStep( column2Seq ); //advances after column2Seq is done playing controlSeq.lastStep.advance = new OnEventComplete(column2Seq, GoEvent.COMPLETE); controlSeq.addStep( column3Seq ); controlSeq.start(); -Jud From: golist-bounces at goasap.org [mailto:golist-bounces at goasap.org] On Behalf Of Moses Gunesch Sent: Thursday, June 19, 2008 12:23 AM To: Mailing list for the Go ActionScript Animation Platform Subject: Re: [Golist] sequencing through a set of tweens... Why not just add the other sequence as a step? (Sequences accept any IPlayable - groups, sequences, tweens etc. - as steps.) moses On Jun 18, 2008, at 2:03 PM, Cadete B7 wrote: yes!!! that's exactly what i'm looking for... i'll check it out. thanks. - Wilbur On Jun 18, 2008, at 3:49 PM, Jud Holliday wrote: Are you saying you have a number of Sequences created and you want to start them in a particular order/offset? In other words create a sequence to play your sequences? _______________________________________________ GoList mailing list GoList at goasap.org http://goasap.org/mailman/listinfo/golist_goasap.org -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080619/dd9af514/attachment-0001.html From moses at goasap.org Thu Jun 19 11:07:18 2008 From: moses at goasap.org (Moses Gunesch) Date: Thu, 19 Jun 2008 11:07:18 -0700 Subject: [Golist] sequencing through a set of tweens... In-Reply-To: <329B3D4270DFFB49BE7B4F2B0307D1317C70E7FD9F@zulu.zaaz.com> References: <4FEE7E4F-2002-4A23-8CCA-54DBB4C124F7@bigote7.com> <329B3D4270DFFB49BE7B4F2B0307D1317C70E7FD3C@zulu.zaaz.com> <30881150-FE9D-48AD-8A93-FABED1F91E80@bigote7.com> <9F0549F3-825D-4B1F-AC59-A69A3631357E@goasap.org> <329B3D4270DFFB49BE7B4F2B0307D1317C70E7FD9F@zulu.zaaz.com> Message-ID: No, the advances should not be necessary. It's not that complicated. :-) Sequences advance by listening for a COMPLETE or STOP event anyway. It doesn't matter if it is a child tween that fires that event or a child sequence, it will still advance. So it should work to simply add sequences as steps. They will have start() called on them as the step starts and the parent will listen for their completion before advancing. Make sense? - m On Jun 19, 2008, at 8:32 AM, Jud Holliday wrote: > So then you would control timing using the advance property? Yep, > that?s probably the better way in that it doesn?t require any extra > classes. Maybe a bit more verbose, but still pretty easy. > > So the previous code example would be changed to look something like > this: > > var column1Seq:SequenceCA = new SequenceCA(); > column1Seq.addStep(new YourTween()); > column1Seq.addStep(new YourTween()); > > var column2Seq:SequenceCA = new SequenceCA(); > column2Seq.addStep(new YourTween()); > column2Seq.addStep(new YourTween()); > > var column3Seq:SequenceCA = new SequenceCA(); > column3Seq.addStep(new YourTween()); > column3Seq.addStep(new YourTween()); > > > var controlSeq:SequenceCA = new SequenceCA(); > > controlSeq.addStep( column1Seq ); > //advances after .5 secs > controlSeq.lastStep.advance = new OnDurationComplete(.5); > > controlSeq.addStep( column2Seq ); > //advances after column2Seq is done playing > controlSeq.lastStep.advance = new OnEventComplete(column2Seq, > GoEvent.COMPLETE); > > controlSeq.addStep( column3Seq ); > controlSeq.start(); > > > > > > -Jud > > From: golist-bounces at goasap.org [mailto:golist-bounces at goasap.org] > On Behalf Of Moses Gunesch > Sent: Thursday, June 19, 2008 12:23 AM > To: Mailing list for the Go ActionScript Animation Platform > Subject: Re: [Golist] sequencing through a set of tweens... > > Why not just add the other sequence as a step? > > (Sequences accept any IPlayable ? groups, sequences, tweens etc. ? > as steps.) > > moses > > On Jun 18, 2008, at 2:03 PM, Cadete B7 wrote: > > > yes!!! that's exactly what i'm looking for... > > i'll check it out. thanks. > > - Wilbur > > On Jun 18, 2008, at 3:49 PM, Jud Holliday wrote: > > > Are you saying you have a number of Sequences created and you want > to start them in a particular order/offset? In other words create a > sequence to play your sequences? > > _______________________________________________ > GoList mailing list > GoList at goasap.org > http://goasap.org/mailman/listinfo/golist_goasap.org > > _______________________________________________ > GoList mailing list > GoList at goasap.org > http://goasap.org/mailman/listinfo/golist_goasap.org -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080619/e99dac5c/attachment.html From judh at ZAAZ.com Thu Jun 19 11:13:35 2008 From: judh at ZAAZ.com (Jud Holliday) Date: Thu, 19 Jun 2008 11:13:35 -0700 Subject: [Golist] sequencing through a set of tweens... In-Reply-To: References: <4FEE7E4F-2002-4A23-8CCA-54DBB4C124F7@bigote7.com> <329B3D4270DFFB49BE7B4F2B0307D1317C70E7FD3C@zulu.zaaz.com> <30881150-FE9D-48AD-8A93-FABED1F91E80@bigote7.com> <9F0549F3-825D-4B1F-AC59-A69A3631357E@goasap.org> <329B3D4270DFFB49BE7B4F2B0307D1317C70E7FD9F@zulu.zaaz.com> Message-ID: <329B3D4270DFFB49BE7B4F2B0307D1317C70E7FDCF@zulu.zaaz.com> Ah, cool. That makes sense for a normal complete event. I think Wilbur was initially looking for a way to control the timing of the sequences though, in which case I think you would still want to use an OnDurationComplete. -Jud From: golist-bounces at goasap.org [mailto:golist-bounces at goasap.org] On Behalf Of Moses Gunesch Sent: Thursday, June 19, 2008 11:07 AM To: Mailing list for the Go ActionScript Animation Platform Subject: Re: [Golist] sequencing through a set of tweens... No, the advances should not be necessary. It's not that complicated. :-) Sequences advance by listening for a COMPLETE or STOP event anyway. It doesn't matter if it is a child tween that fires that event or a child sequence, it will still advance. So it should work to simply add sequences as steps. They will have start() called on them as the step starts and the parent will listen for their completion before advancing. Make sense? - m On Jun 19, 2008, at 8:32 AM, Jud Holliday wrote: So then you would control timing using the advance property? Yep, that's probably the better way in that it doesn't require any extra classes. Maybe a bit more verbose, but still pretty easy. So the previous code example would be changed to look something like this: var column1Seq:SequenceCA = new SequenceCA(); column1Seq.addStep(new YourTween()); column1Seq.addStep(new YourTween()); var column2Seq:SequenceCA = new SequenceCA(); column2Seq.addStep(new YourTween()); column2Seq.addStep(new YourTween()); var column3Seq:SequenceCA = new SequenceCA(); column3Seq.addStep(new YourTween()); column3Seq.addStep(new YourTween()); var controlSeq:SequenceCA = new SequenceCA(); controlSeq.addStep( column1Seq ); //advances after .5 secs controlSeq.lastStep.advance = new OnDurationComplete(.5); controlSeq.addStep( column2Seq ); //advances after column2Seq is done playing controlSeq.lastStep.advance = new OnEventComplete(column2Seq, GoEvent.COMPLETE); controlSeq.addStep( column3Seq ); controlSeq.start(); -Jud From: golist-bounces at goasap.org [mailto:golist-bounces at goasap.org] On Behalf Of Moses Gunesch Sent: Thursday, June 19, 2008 12:23 AM To: Mailing list for the Go ActionScript Animation Platform Subject: Re: [Golist] sequencing through a set of tweens... Why not just add the other sequence as a step? (Sequences accept any IPlayable - groups, sequences, tweens etc. - as steps.) moses On Jun 18, 2008, at 2:03 PM, Cadete B7 wrote: yes!!! that's exactly what i'm looking for... i'll check it out. thanks. - Wilbur On Jun 18, 2008, at 3:49 PM, Jud Holliday wrote: Are you saying you have a number of Sequences created and you want to start them in a particular order/offset? In other words create a sequence to play your sequences? _______________________________________________ GoList mailing list GoList at goasap.org http://goasap.org/mailman/listinfo/golist_goasap.org _______________________________________________ GoList mailing list GoList at goasap.org http://goasap.org/mailman/listinfo/golist_goasap.org -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080619/9210b12e/attachment-0001.html From cadete at bigote7.com Thu Jun 19 11:44:33 2008 From: cadete at bigote7.com (Cadete B7) Date: Thu, 19 Jun 2008 14:44:33 -0400 Subject: [Golist] sequencing through a set of tweens... In-Reply-To: <329B3D4270DFFB49BE7B4F2B0307D1317C70E7FDCF@zulu.zaaz.com> References: <4FEE7E4F-2002-4A23-8CCA-54DBB4C124F7@bigote7.com> <329B3D4270DFFB49BE7B4F2B0307D1317C70E7FD3C@zulu.zaaz.com> <30881150-FE9D-48AD-8A93-FABED1F91E80@bigote7.com> <9F0549F3-825D-4B1F-AC59-A69A3631357E@goasap.org> <329B3D4270DFFB49BE7B4F2B0307D1317C70E7FD9F@zulu.zaaz.com> <329B3D4270DFFB49BE7B4F2B0307D1317C70E7FDCF@zulu.zaaz.com> Message-ID: <8BB9B507-ECEA-49DC-A53F-8266E1EA18A9@bigote7.com> ah, yes... all very illuminating. i think i'm starting to get the idea... but instead of using onDurationComplete i was thinking i'd use the controller's _position value as the trigger... that way i could use the controller's easing function to trigger the start of each SequenceCA... does that make sense? i was thinking i could use this to not only trigger animation sequences but to cycle through data trees too (not sure why yet). - Wilbur On Jun 19, 2008, at 2:13 PM, Jud Holliday wrote: > Ah, cool. That makes sense for a normal complete event. I think > Wilbur was initially looking for a way to control the timing of the > sequences though, in which case I think you would still want to use > an OnDurationComplete. > > > -Jud > > From: golist-bounces at goasap.org [mailto:golist-bounces at goasap.org] > On Behalf Of Moses Gunesch > Sent: Thursday, June 19, 2008 11:07 AM > To: Mailing list for the Go ActionScript Animation Platform > Subject: Re: [Golist] sequencing through a set of tweens... > > No, the advances should not be necessary. It's not that > complicated. :-) > > Sequences advance by listening for a COMPLETE or STOP event anyway. > It doesn't matter if it is a child tween that fires that event or a > child sequence, it will still advance. > > So it should work to simply add sequences as steps. They will have > start() called on them as the step starts and the parent will listen > for their completion before advancing. > > Make sense? > > - m > > > > On Jun 19, 2008, at 8:32 AM, Jud Holliday wrote: > > > So then you would control timing using the advance property? Yep, > that?s probably the better way in that it doesn?t require any extra > classes. Maybe a bit more verbose, but still pretty easy. > > So the previous code example would be changed to look something like > this: > > var column1Seq:SequenceCA = new SequenceCA(); > column1Seq.addStep(new YourTween()); > column1Seq.addStep(new YourTween()); > > var column2Seq:SequenceCA = new SequenceCA(); > column2Seq.addStep(new YourTween()); > column2Seq.addStep(new YourTween()); > > var column3Seq:SequenceCA = new SequenceCA(); > column3Seq.addStep(new YourTween()); > column3Seq.addStep(new YourTween()); > > > var controlSeq:SequenceCA = new SequenceCA(); > > controlSeq.addStep( column1Seq ); > //advances after .5 secs > controlSeq.lastStep.advance = new OnDurationComplete(.5); > > controlSeq.addStep( column2Seq ); > //advances after column2Seq is done playing > controlSeq.lastStep.advance = new OnEventComplete(column2Seq, > GoEvent.COMPLETE); > > controlSeq.addStep( column3Seq ); > controlSeq.start(); > > > > > > -Jud > > From: golist-bounces at goasap.org [mailto:golist-bounces at goasap.org] > On Behalf Of Moses Gunesch > Sent: Thursday, June 19, 2008 12:23 AM > To: Mailing list for the Go ActionScript Animation Platform > Subject: Re: [Golist] sequencing through a set of tweens... > > Why not just add the other sequence as a step? > > (Sequences accept any IPlayable ? groups, sequences, tweens etc. ? > as steps.) > > moses > > On Jun 18, 2008, at 2:03 PM, Cadete B7 wrote: > > > > yes!!! that's exactly what i'm looking for... > > i'll check it out. thanks. > > - Wilbur > > On Jun 18, 2008, at 3:49 PM, Jud Holliday wrote: > > > > Are you saying you have a number of Sequences created and you want > to start them in a particular order/offset? In other words create a > sequence to play your sequences? > > _______________________________________________ > GoList mailing list > GoList at goasap.org > http://goasap.org/mailman/listinfo/golist_goasap.org > > _______________________________________________ > GoList mailing list > GoList at goasap.org > http://goasap.org/mailman/listinfo/golist_goasap.org > > _______________________________________________ > GoList mailing list > GoList at goasap.org > http://goasap.org/mailman/listinfo/golist_goasap.org -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080619/5e16181c/attachment-0001.html From moses at goasap.org Thu Jun 19 11:45:41 2008 From: moses at goasap.org (Moses Gunesch) Date: Thu, 19 Jun 2008 11:45:41 -0700 Subject: [Golist] sequencing through a set of tweens... In-Reply-To: <329B3D4270DFFB49BE7B4F2B0307D1317C70E7FDCF@zulu.zaaz.com> References: <4FEE7E4F-2002-4A23-8CCA-54DBB4C124F7@bigote7.com> <329B3D4270DFFB49BE7B4F2B0307D1317C70E7FD3C@zulu.zaaz.com> <30881150-FE9D-48AD-8A93-FABED1F91E80@bigote7.com> <9F0549F3-825D-4B1F-AC59-A69A3631357E@goasap.org> <329B3D4270DFFB49BE7B4F2B0307D1317C70E7FD9F@zulu.zaaz.com> <329B3D4270DFFB49BE7B4F2B0307D1317C70E7FDCF@zulu.zaaz.com> Message-ID: oh yeah. gotcha. Someone could also write a new playable class that adds an extra delay onto a sequence if that would help. :-) On Jun 19, 2008, at 11:13 AM, Jud Holliday wrote: > Ah, cool. That makes sense for a normal complete event. I think > Wilbur was initially looking for a way to control the timing of the > sequences though, in which case I think you would still want to use > an OnDurationComplete. > > > -Jud > > From: golist-bounces at goasap.org [mailto:golist-bounces at goasap.org] > On Behalf Of Moses Gunesch > Sent: Thursday, June 19, 2008 11:07 AM > To: Mailing list for the Go ActionScript Animation Platform > Subject: Re: [Golist] sequencing through a set of tweens... > > No, the advances should not be necessary. It's not that > complicated. :-) > > Sequences advance by listening for a COMPLETE or STOP event anyway. > It doesn't matter if it is a child tween that fires that event or a > child sequence, it will still advance. > > So it should work to simply add sequences as steps. They will have > start() called on them as the step starts and the parent will listen > for their completion before advancing. > > Make sense? > > - m > > > > On Jun 19, 2008, at 8:32 AM, Jud Holliday wrote: > > > So then you would control timing using the advance property? Yep, > that?s probably the better way in that it doesn?t require any extra > classes. Maybe a bit more verbose, but still pretty easy. > > So the previous code example would be changed to look something like > this: > > var column1Seq:SequenceCA = new SequenceCA(); > column1Seq.addStep(new YourTween()); > column1Seq.addStep(new YourTween()); > > var column2Seq:SequenceCA = new SequenceCA(); > column2Seq.addStep(new YourTween()); > column2Seq.addStep(new YourTween()); > > var column3Seq:SequenceCA = new SequenceCA(); > column3Seq.addStep(new YourTween()); > column3Seq.addStep(new YourTween()); > > > var controlSeq:SequenceCA = new SequenceCA(); > > controlSeq.addStep( column1Seq ); > //advances after .5 secs > controlSeq.lastStep.advance = new OnDurationComplete(.5); > > controlSeq.addStep( column2Seq ); > //advances after column2Seq is done playing > controlSeq.lastStep.advance = new OnEventComplete(column2Seq, > GoEvent.COMPLETE); > > controlSeq.addStep( column3Seq ); > controlSeq.start(); > > > > > > -Jud > > From: golist-bounces at goasap.org [mailto:golist-bounces at goasap.org] > On Behalf Of Moses Gunesch > Sent: Thursday, June 19, 2008 12:23 AM > To: Mailing list for the Go ActionScript Animation Platform > Subject: Re: [Golist] sequencing through a set of tweens... > > Why not just add the other sequence as a step? > > (Sequences accept any IPlayable ? groups, sequences, tweens etc. ? > as steps.) > > moses > > On Jun 18, 2008, at 2:03 PM, Cadete B7 wrote: > > > > yes!!! that's exactly what i'm looking for... > > i'll check it out. thanks. > > - Wilbur > > On Jun 18, 2008, at 3:49 PM, Jud Holliday wrote: > > > > Are you saying you have a number of Sequences created and you want > to start them in a particular order/offset? In other words create a > sequence to play your sequences? > > _______________________________________________ > GoList mailing list > GoList at goasap.org > http://goasap.org/mailman/listinfo/golist_goasap.org > > _______________________________________________ > GoList mailing list > GoList at goasap.org > http://goasap.org/mailman/listinfo/golist_goasap.org > > _______________________________________________ > GoList mailing list > GoList at goasap.org > http://goasap.org/mailman/listinfo/golist_goasap.org -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080619/ce1c8e35/attachment-0001.html From moses at goasap.org Thu Jun 19 11:46:27 2008 From: moses at goasap.org (Moses Gunesch) Date: Thu, 19 Jun 2008 11:46:27 -0700 Subject: [Golist] sequencing through a set of tweens... In-Reply-To: <8BB9B507-ECEA-49DC-A53F-8266E1EA18A9@bigote7.com> References: <4FEE7E4F-2002-4A23-8CCA-54DBB4C124F7@bigote7.com> <329B3D4270DFFB49BE7B4F2B0307D1317C70E7FD3C@zulu.zaaz.com> <30881150-FE9D-48AD-8A93-FABED1F91E80@bigote7.com> <9F0549F3-825D-4B1F-AC59-A69A3631357E@goasap.org> <329B3D4270DFFB49BE7B4F2B0307D1317C70E7FD9F@zulu.zaaz.com> <329B3D4270DFFB49BE7B4F2B0307D1317C70E7FDCF@zulu.zaaz.com> <8BB9B507-ECEA-49DC-A53F-8266E1EA18A9@bigote7.com> Message-ID: <2B1CD8B4-CCF9-47AD-9030-AA2CCDEAA3B8@goasap.org> That's an interesting idea for sure. You could extend SequenceAdvance to create a class like onPositionReached. :-) On Jun 19, 2008, at 11:44 AM, Cadete B7 wrote: > ah, yes... all very illuminating. i think i'm starting to get the > idea... but instead of using onDurationComplete i was thinking i'd > use the controller's _position value as the trigger... that way i > could use the controller's easing function to trigger the start of > each SequenceCA... does that make sense? i was thinking i could > use this to not only trigger animation sequences but to cycle > through data trees too (not sure why yet). > > - Wilbur > > On Jun 19, 2008, at 2:13 PM, Jud Holliday wrote: > >> Ah, cool. That makes sense for a normal complete event. I think >> Wilbur was initially looking for a way to control the timing of the >> sequences though, in which case I think you would still want to use >> an OnDurationComplete. >> >> >> -Jud >> >> From: golist-bounces at goasap.org [mailto:golist-bounces at goasap.org] >> On Behalf Of Moses Gunesch >> Sent: Thursday, June 19, 2008 11:07 AM >> To: Mailing list for the Go ActionScript Animation Platform >> Subject: Re: [Golist] sequencing through a set of tweens... >> >> No, the advances should not be necessary. It's not that >> complicated. :-) >> >> Sequences advance by listening for a COMPLETE or STOP event anyway. >> It doesn't matter if it is a child tween that fires that event or a >> child sequence, it will still advance. >> >> So it should work to simply add sequences as steps. They will have >> start() called on them as the step starts and the parent will >> listen for their completion before advancing. >> >> Make sense? >> >> - m >> >> >> >> On Jun 19, 2008, at 8:32 AM, Jud Holliday wrote: >> >> >> So then you would control timing using the advance property? Yep, >> that?s probably the better way in that it doesn?t require any extra >> classes. Maybe a bit more verbose, but still pretty easy. >> >> So the previous code example would be changed to look something >> like this: >> >> var column1Seq:SequenceCA = new SequenceCA(); >> column1Seq.addStep(new YourTween()); >> column1Seq.addStep(new YourTween()); >> >> var column2Seq:SequenceCA = new SequenceCA(); >> column2Seq.addStep(new YourTween()); >> column2Seq.addStep(new YourTween()); >> >> var column3Seq:SequenceCA = new SequenceCA(); >> column3Seq.addStep(new YourTween()); >> column3Seq.addStep(new YourTween()); >> >> >> var controlSeq:SequenceCA = new SequenceCA(); >> >> controlSeq.addStep( column1Seq ); >> //advances after .5 secs >> controlSeq.lastStep.advance = new OnDurationComplete(.5); >> >> controlSeq.addStep( column2Seq ); >> //advances after column2Seq is done playing >> controlSeq.lastStep.advance = new OnEventComplete(column2Seq, >> GoEvent.COMPLETE); >> >> controlSeq.addStep( column3Seq ); >> controlSeq.start(); >> >> >> >> >> >> -Jud >> >> From: golist-bounces at goasap.org [mailto:golist-bounces at goasap.org] >> On Behalf Of Moses Gunesch >> Sent: Thursday, June 19, 2008 12:23 AM >> To: Mailing list for the Go ActionScript Animation Platform >> Subject: Re: [Golist] sequencing through a set of tweens... >> >> Why not just add the other sequence as a step? >> >> (Sequences accept any IPlayable ? groups, sequences, tweens etc. ? >> as steps.) >> >> moses >> >> On Jun 18, 2008, at 2:03 PM, Cadete B7 wrote: >> >> >> >> yes!!! that's exactly what i'm looking for... >> >> i'll check it out. thanks. >> >> - Wilbur >> >> On Jun 18, 2008, at 3:49 PM, Jud Holliday wrote: >> >> >> >> Are you saying you have a number of Sequences created and you want >> to start them in a particular order/offset? In other words create a >> sequence to play your sequences? >> >> _______________________________________________ >> GoList mailing list >> GoList at goasap.org >> http://goasap.org/mailman/listinfo/golist_goasap.org >> >> _______________________________________________ >> GoList mailing list >> GoList at goasap.org >> http://goasap.org/mailman/listinfo/golist_goasap.org >> >> _______________________________________________ >> GoList mailing list >> GoList at goasap.org >> http://goasap.org/mailman/listinfo/golist_goasap.org > > _______________________________________________ > GoList mailing list > GoList at goasap.org > http://goasap.org/mailman/listinfo/golist_goasap.org -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080619/8ca22f4c/attachment-0001.html From joel at stranskydesign.com Mon Jun 23 17:10:11 2008 From: joel at stranskydesign.com (Joel Stransky) Date: Mon, 23 Jun 2008 17:10:11 -0700 Subject: [Golist] Sneek peak at DepthTween Message-ID: <5be612720806231710y189a9f0fndd97c26e0b04ab75@mail.gmail.com> Hey peeps, My first Go package is finally taking shape. It's very early in development but I couldn't wait to show you all. I really wanted to have this done in time for flashbelt but hey, maybe next time. :) DepthTween is a 2.5D position manager. It basically manages a list of objects and updates their stacking order when any of their draw() methods are called. You first create an instance of DepthManager and pass a DisplayObjectContainer. Children of that DOC can then be initialized and have 3d tween methods called on them. http://lab.stranskydesign.com/depthTween.html Currently I'm struggling with what form of virtual x and virtual y to go with. The goal of the class is to simply add a z property to existing DisplayObjects. Currently I'm using a right-hand system which makes calling 3dtweens a little weird if you're not used to thinking in 3d as an objects 0,0,0 point becomes the center of the DisplayObjectContainer and half way between the foreground and background instead of the upper left corner like we're used to. The catch is, if I keep x and y relative to the upper left corner (reverse cartesian), you still have to get used to thinking in terms of those coordinates augmented by z-depth. I've got a lot of planned features and although it's very early I'd appreciate any feedback/questions/suggestions. -- --Joel -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080623/8eb40b4e/attachment.html From donovan at hydrotik.com Mon Jun 23 17:49:46 2008 From: donovan at hydrotik.com (donovan at hydrotik.com) Date: Mon, 23 Jun 2008 20:49:46 -0400 Subject: [Golist] Sneek peak at DepthTween In-Reply-To: <5be612720806231710y189a9f0fndd97c26e0b04ab75@mail.gmail.com> Message-ID: This is great Joel! Very useful. Personally I would go for a center/middle registration point just because it?s standard with most 3D environments, but some conversion methods would definitely be useful:) Looking forward to seeing what comes of this. Donovan On 6/23/08 8:10 PM, "Joel Stransky" wrote: > Hey peeps, > My first Go package is finally taking shape. It's very early in development > but I couldn't wait to show you all. > I really wanted to have this done in time for flashbelt but hey, maybe next > time. :) > DepthTween is a 2.5D position manager. It basically manages a list of objects > and updates their stacking order when any of their draw() methods are called. > You first create an instance of DepthManager and pass a > DisplayObjectContainer. Children of that DOC can then be initialized and have > 3d tween methods called on them. > > http://lab.stranskydesign.com/depthTween.html > > > Currently I'm struggling with what form of virtual x and virtual y to go with. > The goal of the class is to simply add a z property to existing > DisplayObjects. Currently I'm using a right-hand system which makes calling > 3dtweens a little weird if you're not used to thinking in 3d as an objects > 0,0,0 point becomes the center of the DisplayObjectContainer and half way > between the foreground and background instead of the upper left corner like > we're used to. > > The catch is, if I keep x and y relative to the upper left corner (reverse > cartesian), you still have to get used to thinking in terms of those > coordinates augmented by z-depth. > > I've got a lot of planned features and although it's very early I'd appreciate > any feedback/questions/suggestions. -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080623/60bbe845/attachment.html From joel at stranskydesign.com Tue Jun 24 11:30:21 2008 From: joel at stranskydesign.com (Joel Stransky) Date: Tue, 24 Jun 2008 11:30:21 -0700 Subject: [Golist] Sneek peak at DepthTween In-Reply-To: References: <5be612720806231710y189a9f0fndd97c26e0b04ab75@mail.gmail.com> Message-ID: <5be612720806241130k7fea0eeatf9393fc9210b5382@mail.gmail.com> Thanks for the feedback Donovan! It's been fun to develop so far thanks to Moses but I sense there's even more power I could leverage so I'll be hitting you guys up for tips soon. I think I'll add a toggle for upper left and mid/center locations. A lot of trouble could be saved if I could just figure out a way to add dynamic methods to all Display Objects. --Joel On Mon, Jun 23, 2008 at 5:49 PM, donovan at hydrotik.com wrote: > This is great Joel! Very useful. > > Personally I would go for a center/middle registration point just because > it's standard with most 3D environments, but some conversion methods would > definitely be useful:) > > Looking forward to seeing what comes of this. > > Donovan > > > > On 6/23/08 8:10 PM, "Joel Stransky" wrote: > > Hey peeps, > My first Go package is finally taking shape. It's very early in development > but I couldn't wait to show you all. > I really wanted to have this done in time for flashbelt but hey, maybe next > time. :) > DepthTween is a 2.5D position manager. It basically manages a list of > objects and updates their stacking order when any of their draw() methods > are called. > You first create an instance of DepthManager and pass a > DisplayObjectContainer. Children of that DOC can then be initialized and > have 3d tween methods called on them. > > http://lab.stranskydesign.com/depthTween.html > > > Currently I'm struggling with what form of virtual x and virtual y to go > with. The goal of the class is to simply add a z property to existing > DisplayObjects. Currently I'm using a right-hand system which makes calling > 3dtweens a little weird if you're not used to thinking in 3d as an objects > 0,0,0 point becomes the center of the DisplayObjectContainer and half way > between the foreground and background instead of the upper left corner like > we're used to. > > The catch is, if I keep x and y relative to the upper left corner (reverse > cartesian), you still have to get used to thinking in terms of those > coordinates augmented by z-depth. > > I've got a lot of planned features and although it's very early I'd > appreciate any feedback/questions/suggestions. > > > > _______________________________________________ > GoList mailing list > GoList at goasap.org > http://goasap.org/mailman/listinfo/golist_goasap.org > > -- --Joel -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080624/26eb21cc/attachment.html From moses at goasap.org Tue Jun 24 11:40:11 2008 From: moses at goasap.org (Moses Gunesch) Date: Tue, 24 Jun 2008 14:40:11 -0400 Subject: [Golist] Sneek peak at DepthTween In-Reply-To: <5be612720806241130k7fea0eeatf9393fc9210b5382@mail.gmail.com> References: <5be612720806231710y189a9f0fndd97c26e0b04ab75@mail.gmail.com> <5be612720806241130k7fea0eeatf9393fc9210b5382@mail.gmail.com> Message-ID: <6E88CCF8-B5A7-49C0-A9B7-17B896178E26@goasap.org> Flash 10 adds 2.5D, you should get on their beta. Write to Richard Galvan (galvan at adobe) and be sure to mention your interest in GoASAP in your email. m On Jun 24, 2008, at 2:30 PM, Joel Stransky wrote: > Thanks for the feedback Donovan! It's been fun to develop so far > thanks to Moses but I sense there's even more power I could leverage > so I'll be hitting you guys up for tips soon. > > I think I'll add a toggle for upper left and mid/center locations. A > lot of trouble could be saved if I could just figure out a way to > add dynamic methods to all Display Objects. > > --Joel > > On Mon, Jun 23, 2008 at 5:49 PM, donovan at hydrotik.com > wrote: > This is great Joel! Very useful. > > Personally I would go for a center/middle registration point just > because it's standard with most 3D environments, but some conversion > methods would definitely be useful:) > > Looking forward to seeing what comes of this. > > Donovan > > > > On 6/23/08 8:10 PM, "Joel Stransky" wrote: > > Hey peeps, > My first Go package is finally taking shape. It's very early in > development but I couldn't wait to show you all. > I really wanted to have this done in time for flashbelt but hey, > maybe next time. :) > DepthTween is a 2.5D position manager. It basically manages a list > of objects and updates their stacking order when any of their draw() > methods are called. > You first create an instance of DepthManager and pass a > DisplayObjectContainer. Children of that DOC can then be initialized > and have 3d tween methods called on them. > > http://lab.stranskydesign.com/depthTween.html > > > Currently I'm struggling with what form of virtual x and virtual y > to go with. The goal of the class is to simply add a z property to > existing DisplayObjects. Currently I'm using a right-hand system > which makes calling 3dtweens a little weird if you're not used to > thinking in 3d as an objects 0,0,0 point becomes the center of the > DisplayObjectContainer and half way between the foreground and > background instead of the upper left corner like we're used to. > > The catch is, if I keep x and y relative to the upper left corner > (reverse cartesian), you still have to get used to thinking in terms > of those coordinates augmented by z-depth. > > I've got a lot of planned features and although it's very early I'd > appreciate any feedback/questions/suggestions. > > > _______________________________________________ > GoList mailing list > GoList at goasap.org > http://goasap.org/mailman/listinfo/golist_goasap.org > > > > > -- > --Joel _______________________________________________ > GoList mailing list > GoList at goasap.org > http://goasap.org/mailman/listinfo/golist_goasap.org -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080624/932e511f/attachment.html From joel at stranskydesign.com Tue Jun 24 12:50:13 2008 From: joel at stranskydesign.com (Joel Stransky) Date: Tue, 24 Jun 2008 12:50:13 -0700 Subject: [Golist] Sneek peak at DepthTween In-Reply-To: <6E88CCF8-B5A7-49C0-A9B7-17B896178E26@goasap.org> References: <5be612720806231710y189a9f0fndd97c26e0b04ab75@mail.gmail.com> <5be612720806241130k7fea0eeatf9393fc9210b5382@mail.gmail.com> <6E88CCF8-B5A7-49C0-A9B7-17B896178E26@goasap.org> Message-ID: <5be612720806241250o4226c0en5ea8d976cc564495@mail.gmail.com> Thanks for the info Moses. I've known about the 3D coordinates and 3D plane (hence why I don't plan on any orientation tweens) but don't see anything in the FP10 API mentioning z-sorting. Have you read something saying that will be automatic? Guess I'm not sure if you're shooting me down or saying I should suggest z-sorting to adobe. As it stands, it looks like I would need only replace my ZObject class with their Matrix3D class when FP10 has a big enough adoption rate. --Joel P.S. Interestingly, adobe chose to make 0,0,0 the upper left corner. On Tue, Jun 24, 2008 at 11:40 AM, Moses Gunesch wrote: > Flash 10 adds 2.5D, you should get on their beta. Write to Richard Galvan > (galvan at adobe) and be sure to mention your interest in GoASAP in your > email. > m > > On Jun 24, 2008, at 2:30 PM, Joel Stransky wrote: > > Thanks for the feedback Donovan! It's been fun to develop so far thanks to > Moses but I sense there's even more power I could leverage so I'll be > hitting you guys up for tips soon. > > I think I'll add a toggle for upper left and mid/center locations. A lot of > trouble could be saved if I could just figure out a way to add dynamic > methods to all Display Objects. > > --Joel > > On Mon, Jun 23, 2008 at 5:49 PM, donovan at hydrotik.com < > donovan at hydrotik.com> wrote: > >> This is great Joel! Very useful. >> >> Personally I would go for a center/middle registration point just because >> it's standard with most 3D environments, but some conversion methods would >> definitely be useful:) >> >> Looking forward to seeing what comes of this. >> >> Donovan >> >> >> >> On 6/23/08 8:10 PM, "Joel Stransky" wrote: >> >> Hey peeps, >> My first Go package is finally taking shape. It's very early in >> development but I couldn't wait to show you all. >> I really wanted to have this done in time for flashbelt but hey, maybe >> next time. :) >> DepthTween is a 2.5D position manager. It basically manages a list of >> objects and updates their stacking order when any of their draw() methods >> are called. >> You first create an instance of DepthManager and pass a >> DisplayObjectContainer. Children of that DOC can then be initialized and >> have 3d tween methods called on them. >> >> http://lab.stranskydesign.com/depthTween.html >> >> >> Currently I'm struggling with what form of virtual x and virtual y to go >> with. The goal of the class is to simply add a z property to existing >> DisplayObjects. Currently I'm using a right-hand system which makes calling >> 3dtweens a little weird if you're not used to thinking in 3d as an objects >> 0,0,0 point becomes the center of the DisplayObjectContainer and half way >> between the foreground and background instead of the upper left corner like >> we're used to. >> >> The catch is, if I keep x and y relative to the upper left corner (reverse >> cartesian), you still have to get used to thinking in terms of those >> coordinates augmented by z-depth. >> >> I've got a lot of planned features and although it's very early I'd >> appreciate any feedback/questions/suggestions. >> >> >> >> _______________________________________________ >> GoList mailing list >> GoList at goasap.org >> http://goasap.org/mailman/listinfo/golist_goasap.org >> >> > > > -- > --Joel _______________________________________________ > GoList mailing list > GoList at goasap.org > http://goasap.org/mailman/listinfo/golist_goasap.org > > > > _______________________________________________ > GoList mailing list > GoList at goasap.org > http://goasap.org/mailman/listinfo/golist_goasap.org > > -- --Joel -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080624/9500a6e7/attachment.html From richhauck at mandalatv.net Thu Jun 26 20:25:10 2008 From: richhauck at mandalatv.net (Rich Hauck) Date: Thu, 26 Jun 2008 23:25:10 -0400 Subject: [Golist] HydroTween direct method calls--not callbacks? Message-ID: Are there any plans to allow HydroTween?s sequencing to allow for direct method calls instead of callbacks? Something like: var seq1:SequenceCA = HydroTween.sequence( ,{target:my_mc, x:0, y:0, alpha:1, duration:3, easing:Sine.easeInOut} ,{scope:this, func:?myFunction?, args[?hi?]} } I?ve been on an Flash hiatus, and must say I?m impressed with how far HydroTween?s come :) -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080626/cd5f5f13/attachment.html From eric-paul.lecluse at lbi.lostboys.nl Fri Jun 27 08:18:10 2008 From: eric-paul.lecluse at lbi.lostboys.nl (Eric-Paul Lecluse) Date: Fri, 27 Jun 2008 17:18:10 +0200 Subject: [Golist] List archives? Message-ID: Hey there list, I?m trying out GoASAP and of course run into some things. Is there a searchable archive of this email list somewhere? Otherwise I?d probably be doubleposting with my questions. Cheers, Eric-Paul. -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080627/11d5fbcc/attachment.html From donovan at hydrotik.com Fri Jun 27 08:52:18 2008 From: donovan at hydrotik.com (Donovan Adams) Date: Fri, 27 Jun 2008 11:52:18 -0400 Subject: [Golist] HydroTween direct method calls--not callbacks? + HydroSequence Message-ID: As a matter of fact there is. I've been in the process of testing an update to HydroTween as well as a breakout for Fuse style sequencing which more easily extends the power of SequenceCA. My continuing plan with HydroTween is to keep everything self contained, however this really made more sense in order to take advantage of Go's flexibility. SO with that said, I've added another companion class called HydroSequence. Works like this: import com.hydrotik.go.HydroSequence; var fuse:HydroSequence = new HydroSequence(); for (i = 0; i < _headArray.length - 1; i++) { //HydroTween.go(_headArray[i].container, {alpha:1}, .25, i/4, Quadratic.easeOut); fuse.addItem({target:_headArray[i].container, alpha:1, duration:.15, easing:Quadratic.easeOut}); } fuse.addItem({target:_logo, alpha:1, duration:1, easing:Quadratic.easeOut}); fuse.addItem({target:_headArray[_headArray.length - 1].container, delay:1, alpha:1, duration:.1, easing:Quadratic.easeOut}); fuse.addItem({func: triggerAudio}); fuse.addItem({func: _scope.addEventListener, args:[Event.ENTER_FRAME, renderHeads]}); fuse.addItem({func: drawNav}); fuse.start(); HydroSequence internally generates instances of HydroTween to a sequence. All of the functionality of SequenceCA is accessble through HydroSequence now. If you are interested in testing out/playing with the new version of HydroTween and HydroSequence, contact me offlist and I'll send you the latest. So far it's working great, but wanted to make sure it gets a decent testing before formally posting the updates. Otherwise I should be releasing this soon. Moses, forgive me for naming all my sequences "fuse". :) Habit I picked up from using Fuse AS2 and I copied and pasted this from the new scaretactics site. http://www.scifi.com/scaretactics/ ******* Are there any plans to allow HydroTween's sequencing to allow for direct method calls instead of callbacks? Something like: var seq1:SequenceCA = HydroTween.sequence( ,{target:my_mc, x:0, y:0, alpha:1, duration:3, easing:Sine.easeInOut} ,{scope:this, func:"myFunction", args["hi"]} } I've been on an Flash hiatus, and must say I'm impressed with how far HydroTween's come :) -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080627/bab17247/attachment.html From joel at stranskydesign.com Fri Jun 27 11:37:29 2008 From: joel at stranskydesign.com (Joel Stransky) Date: Fri, 27 Jun 2008 11:37:29 -0700 Subject: [Golist] HydroTween direct method calls--not callbacks? + HydroSequence In-Reply-To: References: Message-ID: <5be612720806271137y61d0458eu12a2b987b56c10d9@mail.gmail.com> Seems like it should be called HydroGroup :) Just fyi, the debugger is throwing this error on the scare tactics page. TypeError: Error #1034: Type Coercion failed: cannot convert flash.events::Event at 13599eb1 to flash.events.MouseEvent. On Fri, Jun 27, 2008 at 8:52 AM, Donovan Adams wrote: > As a matter of fact there is. I've been in the process of testing an > update to HydroTween as well as a breakout for Fuse style sequencing which > more easily extends the power of SequenceCA. My continuing plan with > HydroTween is to keep everything self contained, however this really made > more sense in order to take advantage of Go's flexibility. SO with that > said, I've added another companion class called HydroSequence. Works like > this: > > import com.hydrotik.go.HydroSequence; > > var fuse:HydroSequence = new HydroSequence(); > > > for (i = 0; i < _headArray.length - 1; i++) { > //HydroTween.go(_headArray[i].container, {alpha:1}, .25, > i/4, Quadratic.easeOut); > fuse.addItem({target:_headArray[i].container, alpha:1, > duration:.15, easing:Quadratic.easeOut}); > } > > > fuse.addItem({target:_logo, alpha:1, duration:1, > easing:Quadratic.easeOut}); > fuse.addItem({target:_headArray[_headArray.length - > 1].container, delay:1, alpha:1, duration:.1, easing:Quadratic.easeOut}); > fuse.addItem({func: triggerAudio}); > fuse.addItem({func: _scope.addEventListener, > args:[Event.ENTER_FRAME, renderHeads]}); > fuse.addItem({func: drawNav}); > > fuse.start(); > > HydroSequence internally generates instances of HydroTween to a sequence. > All of the functionality of SequenceCA is accessble through HydroSequence > now. > > If you are interested in testing out/playing with the new version of > HydroTween and HydroSequence, contact me offlist and I'll send you the > latest. So far it's working great, but wanted to make sure it gets a decent > testing before formally posting the updates. Otherwise I should be releasing > this soon. > > > Moses, forgive me for naming all my sequences "fuse". :) Habit I picked up > from using Fuse AS2 and I copied and pasted this from the new scaretactics > site. > > http://www.scifi.com/scaretactics/ > > > ******* > Are there any plans to allow HydroTween's sequencing to allow for direct > method calls instead of callbacks? Something like: > > var seq1:SequenceCA = HydroTween.sequence( > ,{target:my_mc, x:0, y:0, alpha:1, duration:3, > easing:Sine.easeInOut} > ,{scope:this, func:"myFunction", args["hi"]} > } > > I've been on an Flash hiatus, and must say I'm impressed with how far > HydroTween's come :) > > _______________________________________________ > GoList mailing list > GoList at goasap.org > http://goasap.org/mailman/listinfo/golist_goasap.org > > -- --Joel -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080627/4c61c4aa/attachment.html From joel at stranskydesign.com Fri Jun 27 12:05:32 2008 From: joel at stranskydesign.com (Joel Stransky) Date: Fri, 27 Jun 2008 12:05:32 -0700 Subject: [Golist] Setting up a relative vs. absolute change value syntax Message-ID: <5be612720806271205o735e9dc2j342a2eb5b0de633e@mail.gmail.com> Sup Goers, *nudge* *nudge* I'm attempting to bypass useRelative for DepthTween to allow the user to change x, y and z with a combination of absolute and relative values. I can't think of a better way to automate this than the classic String(Number). I assume that means I have to do something like this, mytween:MyTween = new MyTween("10", 20, -200); ... class MyTween extends LinearGo{ var _target:DisplayObject; var _x:Object; var _y:Object; var _z:Object; public function MyTween(target:DisplayObject, x:Object, y:Object, z:Object){ _target = target; if(x is String){ _changeX = _startX + Number(x); }else if(x is Number){ _changeX = x - _startX; } } } But for some reason that doesn't sit well with me. It forces every getter and setter involved to be typed as Objects as well which is basically not typing them at all. What do you guys think? Is this the way to Go? -- --Joel -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080627/d17599eb/attachment.html From donovan at hydrotik.com Fri Jun 27 12:34:13 2008 From: donovan at hydrotik.com (Donovan Adams) Date: Fri, 27 Jun 2008 15:34:13 -0400 Subject: [Golist] GoList Archive Message-ID: <0e4721b55e7245ce8ce087bbe81f7ddb@mail29.safesecureweb.com> Moses is on his way back to NY, but he wanted me to let you all know that you can click on this link: http://goasap.org/pipermail/golist_goasap.org/ Gives you the archive. You can also find this at the footer of the email on the admin page. -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080627/7d3d9e88/attachment.html From donovan at hydrotik.com Fri Jun 27 12:34:54 2008 From: donovan at hydrotik.com (Donovan Adams) Date: Fri, 27 Jun 2008 15:34:54 -0400 Subject: [Golist] HydroTween direct method calls--not callbacks? + HydroSequence Message-ID: <033ba928f0244dc4834d2ef723f1a0f9@mail29.safesecureweb.com> Great Idea.. makes sense.. And thanks for the catch:) ---------------------------------------- Return-Path: Received: from procyon.lunarpages.com [209.200.229.10] by mail29.safesecureweb.com with SMTP; Fri, 27 Jun 2008 14:38:18 -0400 Received: from localhost ([127.0.0.1] helo=procyon.lunarpages.com) by procyon.lunarpages.com with esmtp (Exim 4.68) (envelope-from ) id 1KCIpM-0005Di-7U; Fri, 27 Jun 2008 11:37:44 -0700 Received: from rv-out-0708.google.com ([209.85.198.247]) by procyon.lunarpages.com with esmtp (Exim 4.68) (envelope-from ) id 1KCIpA-0005BS-DG for golist at goasap.org; Fri, 27 Jun 2008 11:37:40 -0700 Received: by rv-out-0708.google.com with SMTP id b17so569191rvf.46 for ; Fri, 27 Jun 2008 11:37:29 -0700 (PDT) Received: by 10.140.127.13 with SMTP id z13mr978712rvc.194.1214591849699; Fri, 27 Jun 2008 11:37:29 -0700 (PDT) Received: by 10.141.122.11 with HTTP; Fri, 27 Jun 2008 11:37:29 -0700 (PDT) Message-ID: <5be612720806271137y61d0458eu12a2b987b56c10d9 at mail.gmail.com> Date: Fri, 27 Jun 2008 11:37:29 -0700 From: "Joel Stransky" To: "Mailing list for the Go ActionScript Animation Platform" In-Reply-To: MIME-Version: 1.0 References: X-Google-Sender-Auth: edf561f6c90e583d X-Spam-Status: No, score=-2.6 X-Spam-Score: -25 X-Spam-Bar: -- X-Spam-Flag: NO Subject: Re: [Golist] HydroTween direct method calls--not callbacks? + HydroSequence X-BeenThere: golist at goasap.org X-Mailman-Version: 2.1.9.cp2 Precedence: list Reply-To: Mailing list for the Go ActionScript Animation Platform List-Id: Mailing list for the Go ActionScript Animation Platform List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: multipart/mixed; boundary="===============1850429701==" Sender: golist-bounces at goasap.org Errors-To: golist-bounces at goasap.org X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - procyon.lunarpages.com X-AntiAbuse: Original Domain - hydrotik.com X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - goasap.org X-Source: X-Source-Args: X-Source-Dir: X-Rcpt-To: X-SmarterMail-Spam: SPF_None Seems like it should be called HydroGroup :) Just fyi, the debugger is throwing this error on the scare tactics page. TypeError: Error #1034: Type Coercion failed: cannot convert flash.events::Event at 13599eb1 to flash.events.MouseEvent. On Fri, Jun 27, 2008 at 8:52 AM, Donovan Adams wrote: As a matter of fact there is. I've been in the process of testing an update to HydroTween as well as a breakout for Fuse style sequencing which more easily extends the power of SequenceCA. My continuing plan with HydroTween is to keep everything self contained, however this really made more sense in order to take advantage of Go's flexibility. SO with that said, I've added another companion class called HydroSequence. Works like this: import com.hydrotik.go.HydroSequence; var fuse:HydroSequence = new HydroSequence(); for (i = 0; i < _headArray.length - 1; i++) { //HydroTween.go(_headArray[i].container, {alpha:1}, .25, i/4, Quadratic.easeOut); fuse.addItem({target:_headArray[i].container, alpha:1, duration:.15, easing:Quadratic.easeOut}); } fuse.addItem({target:_logo, alpha:1, duration:1, easing:Quadratic.easeOut}); fuse.addItem({target:_headArray[_headArray.length - 1].container, delay:1, alpha:1, duration:.1, easing:Quadratic.easeOut}); fuse.addItem({func: triggerAudio}); fuse.addItem({func: _scope.addEventListener, args:[Event.ENTER_FRAME, renderHeads]}); fuse.addItem({func: drawNav}); fuse.start(); HydroSequence internally generates instances of HydroTween to a sequence. All of the functionality of SequenceCA is accessble through HydroSequence now. If you are interested in testing out/playing with the new version of HydroTween and HydroSequence, contact me offlist and I'll send you the latest. So far it's working great, but wanted to make sure it gets a decent testing before formally posting the updates. Otherwise I should be releasing this soon. Moses, forgive me for naming all my sequences "fuse". :) Habit I picked up from using Fuse AS2 and I copied and pasted this from the new scaretactics site. http://www.scifi.com/scaretactics/ ******* Are there any plans to allow HydroTween's sequencing to allow for direct method calls instead of callbacks? Something like: var seq1:SequenceCA = HydroTween.sequence( ,{target:my_mc, x:0, y:0, alpha:1, duration:3, easing:Sine.easeInOut} ,{scope:this, func:"myFunction", args["hi"]} } I've been on an Flash hiatus, and must say I'm impressed with how far HydroTween's come :) _______________________________________________ GoList mailing list GoList at goasap.org http://goasap.org/mailman/listinfo/golist_goasap.org -- --Joel -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080627/7f1ab307/attachment.html From moses at goasap.org Sun Jun 29 12:33:23 2008 From: moses at goasap.org (Moses Gunesch) Date: Sun, 29 Jun 2008 15:33:23 -0400 Subject: [Golist] Sneek peak at DepthTween In-Reply-To: <5be612720806241250o4226c0en5ea8d976cc564495@mail.gmail.com> References: <5be612720806231710y189a9f0fndd97c26e0b04ab75@mail.gmail.com> <5be612720806241130k7fea0eeatf9393fc9210b5382@mail.gmail.com> <6E88CCF8-B5A7-49C0-A9B7-17B896178E26@goasap.org> <5be612720806241250o4226c0en5ea8d976cc564495@mail.gmail.com> Message-ID: <5E15678C-321D-418A-9415-B1840D57DE9F@goasap.org> Not shooting down your idea at all, it's very cool ? especially for Flash Player 9. My guess is that FP10 will probably automate z-sorting since it adds 2.5D, including a z property for DisplayObjects. m On Jun 24, 2008, at 3:50 PM, Joel Stransky wrote: > Thanks for the info Moses. I've known about the 3D coordinates and > 3D plane (hence why I don't plan on any orientation tweens) but > don't see anything in the FP10 API mentioning z-sorting. Have you > read something saying that will be automatic? > > Guess I'm not sure if you're shooting me down or saying I should > suggest z-sorting to adobe. As it stands, it looks like I would need > only replace my ZObject class with their Matrix3D class when FP10 > has a big enough adoption rate. > > --Joel > > P.S. Interestingly, adobe chose to make 0,0,0 the upper left corner. > > On Tue, Jun 24, 2008 at 11:40 AM, Moses Gunesch > wrote: > Flash 10 adds 2.5D, you should get on their beta. Write to Richard > Galvan (galvan at adobe) and be sure to mention your interest in > GoASAP in your email. > > m > > On Jun 24, 2008, at 2:30 PM, Joel Stransky wrote: > >> Thanks for the feedback Donovan! It's been fun to develop so far >> thanks to Moses but I sense there's even more power I could >> leverage so I'll be hitting you guys up for tips soon. >> >> I think I'll add a toggle for upper left and mid/center locations. >> A lot of trouble could be saved if I could just figure out a way to >> add dynamic methods to all Display Objects. >> >> --Joel >> >> On Mon, Jun 23, 2008 at 5:49 PM, donovan at hydrotik.com > > wrote: >> This is great Joel! Very useful. >> >> Personally I would go for a center/middle registration point just >> because it's standard with most 3D environments, but some >> conversion methods would definitely be useful:) >> >> Looking forward to seeing what comes of this. >> >> Donovan >> >> >> >> On 6/23/08 8:10 PM, "Joel Stransky" wrote: >> >> Hey peeps, >> My first Go package is finally taking shape. It's very early in >> development but I couldn't wait to show you all. >> I really wanted to have this done in time for flashbelt but hey, >> maybe next time. :) >> DepthTween is a 2.5D position manager. It basically manages a list >> of objects and updates their stacking order when any of their >> draw() methods are called. >> You first create an instance of DepthManager and pass a >> DisplayObjectContainer. Children of that DOC can then be >> initialized and have 3d tween methods called on them. >> >> http://lab.stranskydesign.com/depthTween.html >> >> >> Currently I'm struggling with what form of virtual x and virtual y >> to go with. The goal of the class is to simply add a z property to >> existing DisplayObjects. Currently I'm using a right-hand system >> which makes calling 3dtweens a little weird if you're not used to >> thinking in 3d as an objects 0,0,0 point becomes the center of the >> DisplayObjectContainer and half way between the foreground and >> background instead of the upper left corner like we're used to. >> >> The catch is, if I keep x and y relative to the upper left corner >> (reverse cartesian), you still have to get used to thinking in >> terms of those coordinates augmented by z-depth. >> >> I've got a lot of planned features and although it's very early I'd >> appreciate any feedback/questions/suggestions. >> >> >> _______________________________________________ >> GoList mailing list >> GoList at goasap.org >> http://goasap.org/mailman/listinfo/golist_goasap.org >> >> >> >> >> -- >> --Joel _______________________________________________ >> >> GoList mailing list >> GoList at goasap.org >> http://goasap.org/mailman/listinfo/golist_goasap.org > > > _______________________________________________ > GoList mailing list > GoList at goasap.org > http://goasap.org/mailman/listinfo/golist_goasap.org > > > > > -- > --Joel _______________________________________________ > GoList mailing list > GoList at goasap.org > http://goasap.org/mailman/listinfo/golist_goasap.org -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080629/60d7dfcd/attachment.html From joel at stranskydesign.com Sun Jun 29 14:18:51 2008 From: joel at stranskydesign.com (Joel Stransky) Date: Sun, 29 Jun 2008 14:18:51 -0700 Subject: [Golist] Sneek peak at DepthTween In-Reply-To: <5E15678C-321D-418A-9415-B1840D57DE9F@goasap.org> References: <5be612720806231710y189a9f0fndd97c26e0b04ab75@mail.gmail.com> <5be612720806241130k7fea0eeatf9393fc9210b5382@mail.gmail.com> <6E88CCF8-B5A7-49C0-A9B7-17B896178E26@goasap.org> <5be612720806241250o4226c0en5ea8d976cc564495@mail.gmail.com> <5E15678C-321D-418A-9415-B1840D57DE9F@goasap.org> Message-ID: <5be612720806291418u5e4fe9c7p9b4f603df869658a@mail.gmail.com> Cool man. Yeah hopefully that will be built in. I went ahead and emailed Richard but haven't heard back. Either way, I have some time before flashplayer 10 is on enough machines and it's been extremely educational working with Go. Even knowing ahead of time how easy it would be to implement easing functions didn't prepare me for how cool it is to seem the work so quickly. Now I just need to add the ability to use relative via strings and add sequencing. Then I can add a bunch of methods like orbitTo(). Oh and in honor of Ladislav, I was thinking of calling this ZGo. :) On Sun, Jun 29, 2008 at 12:33 PM, Moses Gunesch wrote: > Not shooting down your idea at all, it's very cool ? especially for Flash > Player 9. My guess is that FP10 will probably automate z-sorting since it > adds 2.5D, including a z property for DisplayObjects. > m > > On Jun 24, 2008, at 3:50 PM, Joel Stransky wrote: > > Thanks for the info Moses. I've known about the 3D coordinates and 3D plane > (hence why I don't plan on any orientation tweens) but don't see anything in > the FP10 API mentioning z-sorting. Have you read something saying that will > be automatic? > > Guess I'm not sure if you're shooting me down or saying I should suggest > z-sorting to adobe. As it stands, it looks like I would need only replace my > ZObject class with their Matrix3D class when FP10 has a big enough adoption > rate. > > --Joel > > P.S. Interestingly, adobe chose to make 0,0,0 the upper left corner. > > On Tue, Jun 24, 2008 at 11:40 AM, Moses Gunesch wrote: > >> Flash 10 adds 2.5D, you should get on their beta. Write to Richard Galvan >> (galvan at adobe) and be sure to mention your interest in GoASAP in your >> email. >> m >> >> On Jun 24, 2008, at 2:30 PM, Joel Stransky wrote: >> >> Thanks for the feedback Donovan! It's been fun to develop so far thanks to >> Moses but I sense there's even more power I could leverage so I'll be >> hitting you guys up for tips soon. >> >> I think I'll add a toggle for upper left and mid/center locations. A lot >> of trouble could be saved if I could just figure out a way to add dynamic >> methods to all Display Objects. >> >> --Joel >> >> On Mon, Jun 23, 2008 at 5:49 PM, donovan at hydrotik.com < >> donovan at hydrotik.com> wrote: >> >>> This is great Joel! Very useful. >>> >>> Personally I would go for a center/middle registration point just because >>> it's standard with most 3D environments, but some conversion methods would >>> definitely be useful:) >>> >>> Looking forward to seeing what comes of this. >>> >>> Donovan >>> >>> >>> >>> On 6/23/08 8:10 PM, "Joel Stransky" wrote: >>> >>> Hey peeps, >>> My first Go package is finally taking shape. It's very early in >>> development but I couldn't wait to show you all. >>> I really wanted to have this done in time for flashbelt but hey, maybe >>> next time. :) >>> DepthTween is a 2.5D position manager. It basically manages a list of >>> objects and updates their stacking order when any of their draw() methods >>> are called. >>> You first create an instance of DepthManager and pass a >>> DisplayObjectContainer. Children of that DOC can then be initialized and >>> have 3d tween methods called on them. >>> >>> http://lab.stranskydesign.com/depthTween.html >>> >>> >>> Currently I'm struggling with what form of virtual x and virtual y to go >>> with. The goal of the class is to simply add a z property to existing >>> DisplayObjects. Currently I'm using a right-hand system which makes calling >>> 3dtweens a little weird if you're not used to thinking in 3d as an objects >>> 0,0,0 point becomes the center of the DisplayObjectContainer and half way >>> between the foreground and background instead of the upper left corner like >>> we're used to. >>> >>> The catch is, if I keep x and y relative to the upper left corner >>> (reverse cartesian), you still have to get used to thinking in terms of >>> those coordinates augmented by z-depth. >>> >>> I've got a lot of planned features and although it's very early I'd >>> appreciate any feedback/questions/suggestions. >>> >>> >>> >>> _______________________________________________ >>> GoList mailing list >>> GoList at goasap.org >>> http://goasap.org/mailman/listinfo/golist_goasap.org >>> >>> >> >> >> -- >> --Joel _______________________________________________ >> GoList mailing list >> GoList at goasap.org >> http://goasap.org/mailman/listinfo/golist_goasap.org >> >> >> >> _______________________________________________ >> GoList mailing list >> GoList at goasap.org >> http://goasap.org/mailman/listinfo/golist_goasap.org >> >> > > > -- > --Joel _______________________________________________ > GoList mailing list > GoList at goasap.org > http://goasap.org/mailman/listinfo/golist_goasap.org > > > > _______________________________________________ > GoList mailing list > GoList at goasap.org > http://goasap.org/mailman/listinfo/golist_goasap.org > > -- --Joel -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080629/a68cf13e/attachment.html From newsl at analogdesign.ch Mon Jun 30 02:49:49 2008 From: newsl at analogdesign.ch (Cedric M. analogdesign) Date: Mon, 30 Jun 2008 11:49:49 +0200 Subject: [Golist] bolt3d In-Reply-To: <5E15678C-321D-418A-9415-B1840D57DE9F@goasap.org> Message-ID: Hello everyone, Found the following, related to our previous discussions about a centralized way of handling 3d, physic and animation: http://blog.bolt3d.org/ it is a wrapper to allow away3d and wow physic engine to work together easily. It sounds interesting, haven't had time yet to go further into it... Best regards. Cedric M. (aka maddec) Interactive Creator Adobe Flash/Flex/AIR Specialist Since 1998 ---------------------------------------------------- http://analogdesign.ch http://analogdesign.ch/blog visual & interactive communication ---------------------------------------------------- -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080630/4aedbcaf/attachment.html From eric-paul.lecluse at lbi.lostboys.nl Mon Jun 30 03:28:59 2008 From: eric-paul.lecluse at lbi.lostboys.nl (Eric-Paul Lecluse) Date: Mon, 30 Jun 2008 12:28:59 +0200 Subject: [Golist] HydroTween direct method calls--not callbacks? + HydroSequence In-Reply-To: Message-ID: Hey list, I?m currently using GO?s SequenceCA (via an example by John Grden). In the sequence I?d like to insert a single direct functioncall, as you are doing with the fuse-named sequence below. Is that possible with a SequenceCA? Obviously I?m very new to Go, for I can?t even find the HydroTween class in the Go SVN repos. Who?ll give me a slap in the face and a kick in the right direction? Cheers, Eric-Paul. On 6/27/08 17:52 , "Donovan Adams" wrote: > As a matter of fact there is. I've been in the process of testing an update > to HydroTween as well as a breakout for Fuse style sequencing which more > easily extends the power of SequenceCA. My continuing plan with HydroTween is > to keep everything self contained, however this really made more sense in > order to take advantage of Go's flexibility. SO with that said, I've added > another companion class called HydroSequence. Works like this: > > import com.hydrotik.go.HydroSequence; > > var fuse:HydroSequence = new HydroSequence(); > > > for (i = 0; i < _headArray.length - 1; i++) { > //HydroTween.go(_headArray[i].container, {alpha:1}, .25, i/4, > Quadratic.easeOut); > fuse.addItem({target:_headArray[i].container, alpha:1, > duration:.15, easing:Quadratic.easeOut}); > } > > > fuse.addItem({target:_logo, alpha:1, duration:1, > easing:Quadratic.easeOut}); > fuse.addItem({target:_headArray[_headArray.length - 1].container, > delay:1, alpha:1, duration:.1, easing:Quadratic.easeOut}); > fuse.addItem({func: triggerAudio}); > fuse.addItem({func: _scope.addEventListener, > args:[Event.ENTER_FRAME, renderHeads]}); > fuse.addItem({func: drawNav}); > > fuse.start(); > > HydroSequence internally generates instances of HydroTween to a sequence. All > of the functionality of SequenceCA is accessble through HydroSequence now. > > If you are interested in testing out/playing with the new version of > HydroTween and HydroSequence, contact me offlist and I'll send you the latest. > So far it's working great, but wanted to make sure it gets a decent testing > before formally posting the updates. Otherwise I should be releasing this > soon. > > > Moses, forgive me for naming all my sequences "fuse". :) Habit I picked up > from using Fuse AS2 and I copied and pasted this from the new scaretactics > site. > > http://www.scifi.com/scaretactics/ > > > ******* > Are there any plans to allow HydroTween's sequencing to allow for direct > method calls instead of callbacks? Something like: > > var seq1:SequenceCA = HydroTween.sequence( > ,{target:my_mc, x:0, y:0, alpha:1, duration:3, easing:Sine.easeInOut} > ,{scope:this, func:"myFunction", args["hi"]} > } > > I've been on an Flash hiatus, and must say I'm impressed with how far > HydroTween's come :) > > > _______________________________________________ > GoList mailing list > GoList at goasap.org > http://goasap.org/mailman/listinfo/golist_goasap.org -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080630/3cb545a2/attachment.html From donovan at hydrotik.com Mon Jun 30 06:05:40 2008 From: donovan at hydrotik.com (donovan at hydrotik.com) Date: Mon, 30 Jun 2008 09:05:40 -0400 Subject: [Golist] HydroTween direct method calls--not callbacks? + HydroSequence In-Reply-To: Message-ID: HydroTween is on the go playground, however HydroSequence hasn?t been formally released yet. I can send you the latest files, but there are still some additional things that need to be done. I am willing to send the latest to anyone interested for testing/playing for the time being. On 6/30/08 6:28 AM, "Eric-Paul Lecluse" wrote: > Hey list, I?m currently using GO?s SequenceCA (via an example by John Grden). > In the sequence I?d like to insert a single direct functioncall, as you are > doing with the fuse-named sequence below. Is that possible with a SequenceCA? > > Obviously I?m very new to Go, for I can?t even find the HydroTween class in > the Go SVN repos. > > Who?ll give me a slap in the face and a kick in the right direction? > Cheers, > Eric-Paul. > > On 6/27/08 17:52 , "Donovan Adams" wrote: > >> As a matter of fact there is. I've been in the process of testing an update >> to HydroTween as well as a breakout for Fuse style sequencing which more >> easily extends the power of SequenceCA. My continuing plan with HydroTween >> is to keep everything self contained, however this really made more sense in >> order to take advantage of Go's flexibility. SO with that said, I've added >> another companion class called HydroSequence. Works like this: >> >> import com.hydrotik.go.HydroSequence; >> >> var fuse:HydroSequence = new HydroSequence(); >> >> >> for (i = 0; i < _headArray.length - 1; i++) { >> //HydroTween.go(_headArray[i].container, {alpha:1}, .25, i/4, >> Quadratic.easeOut); >> fuse.addItem({target:_headArray[i].container, alpha:1, >> duration:.15, easing:Quadratic.easeOut}); >> } >> >> >> fuse.addItem({target:_logo, alpha:1, duration:1, >> easing:Quadratic.easeOut}); >> fuse.addItem({target:_headArray[_headArray.length - 1].container, >> delay:1, alpha:1, duration:.1, easing:Quadratic.easeOut}); >> fuse.addItem({func: triggerAudio}); >> fuse.addItem({func: _scope.addEventListener, >> args:[Event.ENTER_FRAME, renderHeads]}); >> fuse.addItem({func: drawNav}); >> >> fuse.start(); >> >> HydroSequence internally generates instances of HydroTween to a sequence. All >> of the functionality of SequenceCA is accessble through HydroSequence now. >> >> If you are interested in testing out/playing with the new version of >> HydroTween and HydroSequence, contact me offlist and I'll send you the >> latest. So far it's working great, but wanted to make sure it gets a decent >> testing before formally posting the updates. Otherwise I should be releasing >> this soon. >> >> >> Moses, forgive me for naming all my sequences "fuse". :) Habit I picked up >> from using Fuse AS2 and I copied and pasted this from the new scaretactics >> site. >> >> http://www.scifi.com/scaretactics/ >> >> >> ******* >> Are there any plans to allow HydroTween's sequencing to allow for direct >> method calls instead of callbacks? Something like: >> >> var seq1:SequenceCA = HydroTween.sequence( >> ,{target:my_mc, x:0, y:0, alpha:1, duration:3, easing:Sine.easeInOut} >> ,{scope:this, func:"myFunction", args["hi"]} >> } >> >> I've been on an Flash hiatus, and must say I'm impressed with how far >> HydroTween's come :) >> >> >> _______________________________________________ >> GoList mailing list >> GoList at goasap.org >> http://goasap.org/mailman/listinfo/golist_goasap.org > > > _______________________________________________ > GoList mailing list > GoList at goasap.org > http://goasap.org/mailman/listinfo/golist_goasap.org -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080630/fac9569d/attachment.html From joel at stranskydesign.com Mon Jun 30 10:29:44 2008 From: joel at stranskydesign.com (Joel Stransky) Date: Mon, 30 Jun 2008 10:29:44 -0700 Subject: [Golist] HydroTween direct method calls--not callbacks? + HydroSequence In-Reply-To: References: Message-ID: <5be612720806301029o337c5cc7l55c3b4897d00c5f2@mail.gmail.com> I'm fairly new to svn too. Get yourself TortoiseSVN. It adds a bunch of convenient commands to your contextual menu. On Mon, Jun 30, 2008 at 3:28 AM, Eric-Paul Lecluse < eric-paul.lecluse at lbi.lostboys.nl> wrote: > Hey list, I'm currently using GO's SequenceCA (via an example by John > Grden). In the sequence I'd like to insert a single direct functioncall, as > you are doing with the fuse-named sequence below. Is that possible with a > SequenceCA? > > Obviously I'm very new to Go, for I can't even find the HydroTween class in > the Go SVN repos. > > Who'll give me a slap in the face and a kick in the right direction? > Cheers, > Eric-Paul. > > > On 6/27/08 17:52 , "Donovan Adams" wrote: > > As a matter of fact there is. I've been in the process of testing an > update to HydroTween as well as a breakout for Fuse style sequencing which > more easily extends the power of SequenceCA. My continuing plan with > HydroTween is to keep everything self contained, however this really made > more sense in order to take advantage of Go's flexibility. SO with that > said, I've added another companion class called HydroSequence. Works like > this: > > import com.hydrotik.go.HydroSequence; > > var fuse:HydroSequence = new HydroSequence(); > > > for (i = 0; i < _headArray.length - 1; i++) { > //HydroTween.go(_headArray[i].container, {alpha:1}, .25, > i/4, Quadratic.easeOut); > fuse.addItem({target:_headArray[i].container, alpha:1, > duration:.15, easing:Quadratic.easeOut}); > } > > > fuse.addItem({target:_logo, alpha:1, duration:1, > easing:Quadratic.easeOut}); > fuse.addItem({target:_headArray[_headArray.length - > 1].container, delay:1, alpha:1, duration:.1, easing:Quadratic.easeOut}); > fuse.addItem({func: triggerAudio}); > fuse.addItem({func: _scope.addEventListener, > args:[Event.ENTER_FRAME, renderHeads]}); > fuse.addItem({func: drawNav}); > > fuse.start(); > > HydroSequence internally generates instances of HydroTween to a sequence. > All of the functionality of SequenceCA is accessble through HydroSequence > now. > > If you are interested in testing out/playing with the new version of > HydroTween and HydroSequence, contact me offlist and I'll send you the > latest. So far it's working great, but wanted to make sure it gets a decent > testing before formally posting the updates. Otherwise I should be releasing > this soon. > > > Moses, forgive me for naming all my sequences "fuse". :) Habit I picked up > from using Fuse AS2 and I copied and pasted this from the new scaretactics > site. > > http://www.scifi.com/scaretactics/ > > > ******* > Are there any plans to allow HydroTween's sequencing to allow for direct > method calls instead of callbacks? Something like: > > var seq1:SequenceCA = HydroTween.sequence( > ,{target:my_mc, x:0, y:0, alpha:1, duration:3, > easing:Sine.easeInOut} > ,{scope:this, func:"myFunction", args["hi"]} > } > > I've been on an Flash hiatus, and must say I'm impressed with how far > HydroTween's come :) > > ------------------------------ > _______________________________________________ > GoList mailing list > GoList at goasap.org > http://goasap.org/mailman/listinfo/golist_goasap.org > > > _______________________________________________ > GoList mailing list > GoList at goasap.org > http://goasap.org/mailman/listinfo/golist_goasap.org > > -- --Joel -------------- next part -------------- An HTML attachment was scrubbed... URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080630/8fb923e5/attachment-0001.html