Table of Contents
Enumerations #
Name | Values |
---|
This class exposes no enumerations.
Constants #
Name | Type | Value |
---|
This class exposes no constants.
Events #
Definition | Description |
---|
This class exposes no events.
Delegates #
Definition |
---|
AtKeyframe(currentKeyframe as GraffitiAnimatorKeyframe) |
AnimationComplete() |
AnimationProgress(animControl as GraffitiAnimatorControl, animOp as GraffitiAnimatorOperation, newValue as Double) |
Methods #
Definition | Description |
---|---|
AddKeyframe(Name as String, waitTime as Integer = 0) as GraffitiAnimatorControl | Adds a new keyframe. |
AddKeyframe(newKeyframe as GraffitiAnimatorKeyframe) as GraffitiAnimatorControl | |
AddKeyframe(waitTime as Integer = 0) as GraffitiAnimatorControl | |
AddOperation(animOp as GraffitiAnimatorOperation) as GraffitiAnimatorControl | Adds a new animation operation to the stack. |
Constructor(Target as RectControl) | Instantiates a new instance of the class. |
Move(newLeft as Double, newTop as Double, animationLength as Integer, easing as GraffitiAnimator.Easings) as GraffitiAnimatorControl | Moves the control to the specified position. |
OnComplete(finishFunction as AnimationComplete) | Invokes the provided delegate when all animation has completed. |
OnKeyframe(keyframeFunction as AtKeyframe) | Invokes the provided delegate when the animation encounters a keyframe. |
OnProgress(changeFunction as AnimationProgress) | Invokes the provided delegate as animation operations progress. |
Play(DestroyWhenComplete as Boolean = True) | Plays the provided animation stack, optionally destructs itself when complete. |
Resize(newWidth as Double, newHeight as Double, animationLength as Integer, easing as GraffitiAnimator.Easings) | Resizes the RectControl using the specified values. |
Shake(numberOfShakes as Integer = 5, deltaX as Integer = 5, deltaY as Integer = 0, animationLength as Integer = 800) | Causes the RectControl to shake violently along the X-axis. |
Stop() as GraffitiAnimatorControl | Cancels all running animations and immediately applies the requested end values for those operations. |
Properties #
Name | Type | Default Value | Description |
---|---|---|---|
ConstraintHeight | iOSLayoutConstraint | Nil | AutoLayout constraint to use when animating control’s height. |
ConstraintLeft | iOSLayoutConstraint | Nil | AutoLayout constraint to use when animating control’s width. |
ConstraintTop | iOSLayoutConstraint | Nil | AutoLayout constraint to use when animating control’s top. |
ConstraintWidth | iOSLayoutConstraint | Nil | AutoLayout constraint to use when animating control’s width. |
State | GraffitiAnimator.States | Idle | The current running state of the animator. |
Target | RectControl | Nil | The UI element to be animated. |
Examples #
Chaining #
This class was developed to make animation chaining simple for enthralling UI animations. Below is an example directly from the demo project that demonstrates how this is done. Me
is a PushButton:
if animControl = nil then '// Setup constraints. var x as new iOSLayoutConstraint( me, iOSLayoutConstraint.AttributeTypes.Left, _ iOSLayoutConstraint.RelationTypes.Equal, _ self, iOSLayoutConstraint.AttributeTypes.Left, 1, me.Left, 1000 ) x.Active = True var y as new iOSLayoutConstraint( me, iOSLayoutConstraint.AttributeTypes.Top, _ iOSLayoutConstraint.RelationTypes.Equal, _ self, iOSLayoutConstraint.AttributeTypes.Top, 1, 70, 1000 ) y.Active = True var w as new iOSLayoutConstraint( me, iOSLayoutConstraint.AttributeTypes.Width, _ iOSLayoutConstraint.RelationTypes.Equal, _ nil, iOSLayoutConstraint.AttributeTypes.None, 1, me.Width, 1000 ) w.Active = True var h as new iOSLayoutConstraint( me, iOSLayoutConstraint.AttributeTypes.Height, _ iOSLayoutConstraint.RelationTypes.Equal, _ nil, iOSLayoutConstraint.AttributeTypes.None, 1, me.Height, 1000 ) h.Active = True self.AddConstraint( x ) self.AddConstraint( y ) self.AddConstraint( w ) self.AddConstraint( h ) animControl = new GraffitiAnimatorControl( me, x, y, w, h ) call animControl.OnProgress( GraffitiAnimatorControl.AnimationProgress( WeakAddressOf bounceProgress ) )._ OnKeyframe( GraffitiAnimatorControl.AtKeyframe( WeakAddressOf bounceKeyframe ) )._ OnComplete( GraffitiAnimatorControl.AnimationComplete( WeakAddressOf bounceFinished ) ) end if if animControl.State = GraffitiAnimator.States.Running then Return animControl.constraintTop.Offset = 70 Call animControl._ AddOperation( new GraffitiAnimatorOperation( "textsize", me.FontSize, me.FontSize * 2, 1000, GraffitiAnimator.Easings.BounceOut ) )._ Move( me.Left, me.Top + 50, 1000, GraffitiAnimator.Easings.BounceOut )._ Resize( me.Width * 2, me.Height, 1000, GraffitiAnimator.Easings.ElasticOut )._ AddKeyframe( "MidPoint", 1000 ) call animControl.Play( True )
Notes #
Constraints #
In order for animations to function correctly, any constraints on the target object must be set to have any priority except Highest. GraffitiAnimator will modify the Offset of these constraints based on the time elapsed in the animation sequence.