DoubleAnimation方法

现在silverlight中还不支持直接用c#代码来创建动画,只能通过XamlReader来加载storyboard。
今天看了DoubleAnimation这个方法。可以动态的设置属性。   这里就很奇怪。我动态的new出来的巨型一直不发生变化。而直接在舞台上画出的巨型就能发生变化。
研究了好久才发现DoubleAnimation只能操作已经声明过的属性。
    <Rectangle Width="46" Height="41" Fill="#FFA74545" Stroke="#FF000000" Canvas.Left="154"
Canvas.Top
="262" x:Name="ox" RenderTransformOrigin="0.5,0.5">
        <Rectangle.RenderTransform>
            
<TransformGroup>
                
<ScaleTransform ScaleX="1" ScaleY="1"/>
                
<SkewTransform AngleX="0" AngleY="0"/>
                
<RotateTransform Angle="34.744"/>
                
<TranslateTransform X="0" Y="0"/>
            
</TransformGroup>
        
</Rectangle.RenderTransform>

    
</Rectangle>

        private const string ANIMATION = "<Storyboard Name=\"TestStoryboard\">"
       
+ "<DoubleAnimation"
       
+ "  Storyboard.TargetName=\"ox\""
       
+ "  Storyboard.TargetProperty=\"(UIElement.RenderTransform).
(TransformGroup.Children)[
3].(TranslateTransform.X)\""
       
+ "  From=\"0\" To=\"100\" Duration=\"0:0:5\" />"
       
+ "</Storyboard>";

            Storyboard storyboard = XamlReader.Load(ANIMATION) as Storyboard;
            
this.Resources.Add(storyboard);
            storyboard.Begin();
这里<Rectangle.RenderTransform>是必须要的。多一行少一行都不行。不然就不会产生动画。
目前对“ Storyboard.TargetProperty”这个属性还不是很明白。
posted @ 2008-02-15 15:48  王喆(nasa)  阅读(2236)  评论(0编辑  收藏  举报