IXRStoryboard (Windows Embedded CE 6.0)
1/6/2010
This class controls the playback of animations with a timeline and provides information used to target objects and properties for its child animations.
Syntax
class IXRStoryboard : public IXRTimeline
Methods
Method | Description |
---|---|
Starts the set of animations associated with this storyboard. |
|
Retrieves the collection of child animations as objects derived from IXRTimeline. |
|
Retrieves the clock state of this storyboard. |
|
Retrieves the current time span of this storyboard. |
|
Pauses the animation clock of this storyboard. |
|
Resumes the animation clock of this storyboard. |
|
Advances this storyboard to the specified position in the timeline. The storyboard performs the requested seek when the next clock tick occurs. |
|
Advances this storyboard to a new position from the current position based on a specified time increment (synchronously). |
|
Advances this storyboard's clock to the end of its active period. |
|
Stops the playback of this storyboard. |
Remarks
You can use the interactive methods in the IXRStoryboard class to start, pause, resume, and stop an animation.
You can use an IXRStoryboard object as a container for both individual animation objects (for example, IXRColorAnimation) and also child storyboard objects that contain their own animation collections. When an IXRStoryboard contains IXRStoryboard objects in its child collection, this is referred to as nestingIXRStoryboard objects within one another.
Implementing nested storyboards can help you create complex animation sequences. Each child storyboard waits until its parent storyboard begins before it starts the countdown for its own start time. You can add a new storyboard object to another Silverlight object by using IXRBeginStoryboard::SetStoryboard or IXRVisualTransition::SetStoryboard, or by adding it to the collection retrieved by IXRFrameworkElement::GetResources.
You can retrieve a storyboard's IXRTimelineCollection object by calling IXRStoryboard::GetChildren, and then you can manipulate the collection by adding objects to it. Then you can specify begin-time values for each nested IXRStoryboard separately by using its inherited method IXRTimeline::SetBeginTime.
To create a collection of IXRStoryboard objects that play when a framework element raises the OnLoaded event, create IXRBeginStoryboard objects and add an IXRStoryboard to each one by calling IXRBeginStoryboard::SetStoryboard.
You can also define a storyboard in Silverlight 2 XAML. For information about the differences between XAML in Silverlight for Windows Embedded and Silverlight 2, see Differences Between Silverlight for the Web and Silverlight for Windows Embedded. For more information about how to define this element in the source XAML for your application, see this Microsoft Web site.
Example
The following example code creates a new storyboard, adds animations to it, and then adds it as a new resource for an IXRCanvas object in the visual tree. It also shows how to start the animation within event handling code.
Important
For readability, the following code example does not contain security checking or error handling. Do not use the following code in a production environment.
#include <windows.h>
#include <XamlRuntime.h>
#include <XRDelegate.h>
#include <XRPtr.h>
// Create an event handler that plays the animation.
// The following code shows a simple event handler as a starting point
class CustomEventHandlers
{
public:
IXRVisualHost* g_pHost;
HRESULT SetHost(IXRVisualHost* pHost)
{
HRESULT hr;
ASSERT(! g_pHost);
if(NULL == pHost)
{
hr = S_FALSE;
return hr;
}
g_pHost = pHost;
g_pHost->AddRef();
hr = S_OK;
return hr;
}
HRESULT OnMouseEnter(IXRDependencyObject* pSender, XRMouseEventArgs* pArgs)
{
IXRFrameworkElementPtr pRoot;
IXRStoryboardPtr pStoryboard;
g_pHost->GetRootElement(&pRoot);
pRoot->FindName(L"NewStoryboard", &pStoryboard);
// play the storyboard on-screen
// First make sure that the storyboard not playing
pStoryboard->Stop();
// Begin playing the storyboard animation
pStoryboard->Begin();
}
};
// Create the animation storyboard
void CreateStoryboard(IXRApplication* pApplication, IXRColorAnimation* myColorAnimation,
IXRPointAnimation* myPointAnimation, XRDuration* myDefinedDuration,
IXRCanvas* pCanvas, CustomEventHandlers* myHandlerObject)
{
// Create a new storyboard for the child animations that were
// provided as [in] parameters
IXRStoryboard* myStoryboard;
IXRTimelineCollection* childAnimations;
bool AutoReverseSetting = true;
pApplication->CreateObject(IID_IXRStoryboard, &myStoryboard);
myStoryboard->GetChildren(&childAnimations);
childAnimations->Add(myColorAnimation, NULL);
childAnimations->Add(myPointAnimation, NULL);
myStoryboard->SetName(L"NewStoryboard");
myStoryboard->SetDuration(myDefinedDuration);
myStoryboard->SetAutoReverse(AutoReverseSetting);
// Add the new storyboard to a canvas that is in the visual tree
IXRResourceDictionary* canvasResources;
pCanvas->GetResources(&canvasResources);
canvasResources->Add(myStoryboard, NULL);
// Attach a delegate to an event in an event object that represents
// the animation event handler
pCanvas->AddMouseEnterEventHandler(CreateDelegate(&myHandlerObject, &CustomEventHandlers::OnMouseEnter));
}
To run the previous code sample, you must already have created an IXRCanvas object with the name MyAnimatedCanvas
in the visual tree and both the IXRPointAnimation and IXRColorAnimation objects that this code example adds to the animation storyboard.
To begin a storyboard animation for a storyboard that was defined in the Silverlight 2 XAML, you can locate it from the event handling code by calling IXRFrameworkElement::FindName and passing in the x:Name string defined for the <Storyboard> element.
Inheritance Hierarchy
IXRStoryboard
.NET Framework Equivalent
System.Windows.Media.Animation.Storyboard
Requirements
Header | XamlRuntime.h |
sysgen | SYSGEN_XAML_RUNTIME |
Windows Embedded CE | Windows Embedded CE 6.0 R3 |
See Also
Reference
Classes for Visual Appearance and Behavior