From e3f6ef9404f35aed638b5de626ca430265054e59 Mon Sep 17 00:00:00 2001 From: Adeel Kazmi Date: Mon, 1 Jun 2015 15:18:27 +0100 Subject: [PATCH] (Programming Guide) KeyFrame Animation, Path Animation, Constraints Change-Id: I2d9fac7129340ea72c7467c3d51bfaf3b31678c7 --- docs/content/images/animation/animated-path.png | Bin 0 -> 10680 bytes docs/content/main.md | 18 +++----- docs/content/programming-guide/constraints.h | 19 ++++++++ .../animation.md | 48 ++++++++++++++++++++- .../fundamentals.md | 12 ++++-- 5 files changed, 81 insertions(+), 16 deletions(-) create mode 100644 docs/content/images/animation/animated-path.png diff --git a/docs/content/images/animation/animated-path.png b/docs/content/images/animation/animated-path.png new file mode 100644 index 0000000000000000000000000000000000000000..04ae2a6f0a10ae5767994906573b962e08d413eb GIT binary patch literal 10680 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 d95r>oX#DWA;7!+$%pl+cxvh7rNW( actor, Dali::Actor::Property::POSITION, Dali::EqualToConstraint() ); +constraint.AddSource( Dali::Source( anotherActor, Dali::Actor::Property::POSITION ) ); +constraint.Apply(); +@endcode +Here actor's position is set to equal the position of anotherActor. + +\section constraints-relative-to Relative To Constraint + +The built in Dali::RelativeToConstraint and Dali::RelativeToConstraintFloat can be used if all that is required is setting a property relative to another property: +@code +Dali::Constraint constraint = Dali::Constraint::New< Vector3 >( actor, Dali::Actor::Property::POSITION, Dali::RelativeToConstraint( 2.0f ) ); +constraint.AddSource( Dali::Source( anotherActor, Dali::Actor::Property::POSITION ) ); +constraint.Apply(); +@endcode +Here actor's position is relative to the position of anotherActor, i.e., if anotherActor is at (10.0f, 20.0f, 30.0f), actor will be at (20.0f, 40.0f, 60.0f). * */ diff --git a/docs/content/shared-javascript-and-cpp-documentation/animation.md b/docs/content/shared-javascript-and-cpp-documentation/animation.md index fcca831..889106c 100644 --- a/docs/content/shared-javascript-and-cpp-documentation/animation.md +++ b/docs/content/shared-javascript-and-cpp-documentation/animation.md @@ -80,4 +80,50 @@ animation.SetEndAction( Animation::Discard ); ## Key-Frame Animation {#animation-key-frame} -TODO \ No newline at end of file +DALi provides support for animating between several different values, i.e. key-frames. +A key frame takes a progress value between 0.0f and 1.0f (0 and 100% respectively) and portrays the value of the property when the animation has progressed that much. +You can create several key frames: +~~~{.cpp} +Dali::KeyFrames keyFrames = Dali::KeyFrames::New(); +keyFrames.Add( 0.0f, Vector3( 10.0f, 10.0f, 10.0f ) ); +keyFrames.Add( 0.7f, Vector3( 200.0f, 200.0f, 200.0f ) ); +keyFrames.Add( 1.0f, Vector3( 100.0f, 100.0f, 100.0f ) ); +~~~ +And then add them to your animation. +~~~{.cpp} +animation.AnimateBetween( Property( actor1, Dali::Actor::Property::POSITION ), keyFrames ); +~~~ +When you play the animation, DALi will animate the position of actor1 between the key-frames specified. +'actor1' will animate from (10.0f, 10.0f, 10.0f) to (200.0f, 200.f, 200.0f) by 70% of the animation time, +and then spend the remaining time animating back to (100.0f, 100.0f, 100.0f). + +The advantage of specifying a key-frame at 0% is that regardless of where 'actor1' is, it will start from position (10.0f, 10.0f, 10.0f). +If AnimateTo was used, then the start position would have been actor1's current position. + +## Path Animations {#animation-paths} + +A Dali::Path can be used to animate the position and orientation of actors. + +![ ](animation/animated-path.png) + +The black points in the diagram are points where the DALi logo will travel to. +The red points are the control points which express the curvature of the path on the black points. + +This, in code will be represented as follows: +~~~{.cpp} +Path path = Path::New(); +path.AddPoint( Vector3( 50.0f, 10.0f, 0.0f )); +path.AddPoint( Vector3( 90.0f, 50.0f, 0.0f )); +path.AddPoint( Vector3( 10.0f, 90.0f, 0.0f )); +~~~ +The control points can be added manually using Dali::Path::AddControlPoint or Path can auto-generate them for you: +~~~{.cpp} +path.GenerateControlPoints(0.25f); +~~~ +Here 0.25f represents the curvature of the path you require. Please see Dali::Path::GenerateControlPoints for more information. + +To animate actor1 along this path: +~~~{.cpp} +animation.Animate( actor1, path, Vector3::ZERO ); +~~~ +The third parameter is the forward vector (in local space coordinate system) that will be oriented with the path's tangent direction. \ No newline at end of file diff --git a/docs/content/shared-javascript-and-cpp-documentation/fundamentals.md b/docs/content/shared-javascript-and-cpp-documentation/fundamentals.md index 8ea1257..2442180 100644 --- a/docs/content/shared-javascript-and-cpp-documentation/fundamentals.md +++ b/docs/content/shared-javascript-and-cpp-documentation/fundamentals.md @@ -5,10 +5,14 @@ ## Actors and the Stage {#actors-and-stage} -A DALi application uses a hierachy of Dali::Actor objects to position visible content. An actor inherits a position relative to its parent, and can be moved relative to this point. UI controls can be built by combining multiple actors. - -To display the contents of an actor, it must be connected to the Dali::Stage. This provides an invisible root (top-level) actor, to which all other actors are added. A direct or indirect child of the root actor is considered "on-stage". Multi-touch events are received through signals emitted by on-stage actors. - +Actor is the primary object with which DALi applications interact. +A DALi application uses a hierachy of Dali::Actor objects to position visible content. +An actor inherits a position relative to its parent, and can be moved relative to this point. +UI controls can be built by combining multiple actors. + +The Stage is a top-level object used for displaying a tree of Actors. +To display the contents of an actor, it must be added to the Dali::Stage, + The following example shows how to connect a new actor to the stage: ~~~{.cpp} -- 2.7.4