AbstractTween.as

Go to the documentation of this file.
00001 import com.mosesSupposes.fuse.PennerEasing;
00002 
00003 import gugga.collections.HashTable;
00004 import gugga.utils.DebugUtils;
00005 
00009 class gugga.tween.AbstractTween 
00010 {
00011         private var mInitialValues : HashTable;
00012         
00013         private var mSubject : Object;
00014         public function get Subject() : Object
00015         {
00016                 return mSubject;
00017         }
00018         
00019         public var mTweeningProperties : HashTable;
00020         public function get TweeningProperties() : HashTable
00021         {
00022                 return mTweeningProperties;
00023         }
00024         
00025         public var Duration : Number = 10;
00026         
00037         public var EasingEquation : Function = PennerEasing.linear;
00038         
00039         public var TweenFinishedDelegate : Function;
00040         public var TweenUpdateDelegate : Function;
00041         
00042         public var Option1 : Number;
00043         public var Option2 : Number;
00044         
00045         private var mDurationElapsed : Number = 0;
00046         public function get DurationElapsed() : Number
00047         {
00048                 return mDurationElapsed;
00049         }
00050         
00051         public function get Finished() : Boolean
00052         {
00053                 return (mDurationElapsed >= Duration);
00054         }
00055         
00056         public function AbstractTween(aSubject:Object, aTweeningProperties:HashTable) 
00057         {
00058                 super();
00059                 
00060                 mSubject = aSubject;
00061                 
00062                 mTweeningProperties = new HashTable();
00063                 mInitialValues = new HashTable();
00064                 
00065                 for (var key:String in aTweeningProperties)
00066                 {
00067                         mInitialValues[key] = aSubject[key];
00068                         mTweeningProperties[key] = aTweeningProperties[key];
00069                 }
00070         }
00071         
00072         public function update() : Void
00073         {
00074                 increaseDurationElapsed();
00075                 
00076                 for (var key:String in mTweeningProperties)
00077                 {
00078                         mSubject[key] = EasingEquation(
00079                                 mDurationElapsed,
00080                                 mInitialValues[key],
00081                                 mTweeningProperties[key] - mInitialValues[key],
00082                                 Duration,
00083                                 Option1,
00084                                 Option2
00085                         );
00086                 }
00087                 
00088                 TweenUpdateDelegate();
00089                 
00090                 if(Finished)
00091                 {
00092                         TweenFinishedDelegate();
00093                 }
00094         }       
00095         
00096         private function increaseDurationElapsed() : Void 
00097         {
00098                 throw new Error("Not implemented");
00099         }
00100 }

Generated on Fri May 11 17:12:42 2007 for GuggaFramework by  doxygen 1.5.2