Page view counter

Jesse Liberty - Silverlight Geek

More Signal Less Noise

Did You Know... That You Can Create A Timer Using XAML Animation?

To do so, create a Storyboard and mark that you will handle the Completed event.

<Storyboard Completed="OnTimerCompleted">

Put in the simplest Animation you can manage (name it, so that you can set the duration programmatically).

<DoubleAnimation x:Name="TimerDuration"

make sure you give it a duration, and point it at the simplest object you can create.

Duration="00:00:01.00" 
Storyboard.TargetName="MyRect"
Storyboard.TargetProperty="Height"

When the duration expires you can take action and, if you wish, reset the timer.

function OnTimerCompleted...

Here's a complete sample...

<Canvas xmlns="http://schemas.microsoft.com/client/2007" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    
    <Canvas.Resources>
        <Storyboard 
            x:Name="myTimer" 
            Completed="OnTimerCompleted">
            <DoubleAnimation x:Name="TimerDuration"
                Duration="00:00:01.00" 
                Storyboard.TargetName="MyRect"
                Storyboard.TargetProperty="Height" />
        </Storyboard>
    </Canvas.Resources>

    <Canvas>
        <Rectangle x:Name="MyRect"/>
    </Canvas>

</Canvas>

Here's the javascript...

MyDemo.Scene.prototype =
{
    handleLoad: function(plugIn, userContext, rootElement) 
    {
        // set the timer duration
        timer = plugIn.content.findName("TimerDuration"); 
        timer.Duration="00:00:05.00";
        
        // start the timer
        myStoryboard = plugIn.content.findName("myTimer"); 
        myStoryboard.begin();
    }
}

function OnTimerCompleted(sender, args)
{
       alert ("Timer completed!");
       myStoryboard = sender.findName("myTimer");
       myStoryboard.begin();  //restart timer
}

Comments

Did You Know... That You Can Create A Timer Using XAML Animation? - Jesse Liberty - Silverlight Geek said:

Pingback from  Did You Know... That You Can Create A Timer Using XAML Animation? - Jesse Liberty - Silverlight Geek

# December 9, 2007 4:56 PM

Bill Reiss said:

FYI...you can put the Duration on the Storyboard and not even have a dummy DoubleAnimation child node.

# December 9, 2007 6:05 PM

Test said:

To do so, create a Storyboard and mark that you will handle the Completed event. &lt;Storyboard Completed=&quot;OnTimerCompleted&quot;&gt;

# December 9, 2007 6:22 PM

gjhdigital said:

how can I take the seconds value and update a textblock with the current second on each passing second?

# December 9, 2007 8:37 PM

jesseliberty said:

Much Simpler!! Thank you Bill Reiss....

Here's the much simplified code:

<Canvas xmlns="schemas.microsoft.com/.../2007" xmlns:x="schemas.microsoft.com/.../xaml">

   <Canvas.Resources>

       <Storyboard x:Name="myTimer" Completed="OnTimerCompleted" Duration="00:00:01.00" />

   </Canvas.Resources>

</Canvas>

The Javascript then becomes...

MyDemo.Scene.prototype =

{

  handleLoad: function(plugIn, userContext, rootElement)

 {

   // set the timer duration

   timer = plugIn.content.findName("myTimer");

   timer.Duration="00:00:05.00";

   timer.begin();

   }

 }

function OnTimerCompleted(sender, args)

{

 alert ("Timer completed!");

 myStoryboard = sender.findName("myTimer");

 myStoryboard.begin();

}

# December 9, 2007 9:07 PM

Frank La Vigne said:

# December 10, 2007 10:56 AM

Frank La Vigne said:

# December 11, 2007 6:41 AM

Thoughts on Silverlight » BIT-101 Blog said:

Pingback from  Thoughts on Silverlight &raquo; BIT-101 Blog

# December 11, 2007 6:30 PM

Community Blogs said:

First of two-parts of Cream I&#39;ve found in my blog-reading: Koen of FirsFloor demonstrates a Slideshow

# December 12, 2007 12:30 AM

said:

A Customer who asked if a quiz-type application can be enabled by Silverlight. The answer is yes (obviously

# March 16, 2008 3:59 AM