Silverlight では、マークアップを使ってアニメーションを定義できます。 ここでは、Silverlight のアニメーション機能を紹介し、 最初の Silverlight アニメーションを作成する手順を示します。 ここでは、以下のセクションで構成されています。 手引き: オブジェクトのアニメーションstep 1: アニメーションするものを選ぶまず、アニメーションするものが必要です。ここでは Ellipse を使います。 以下の例では、Ellipse を作成して、黒く塗りつぶしています。 [hide XAML] <Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Ellipse x:Name="ellipse" Height="20" Width="20" Canvas.Left="30" Canvas.Top="30" Fill="black" /> </Canvas> [hide] [restart] この楕円には名前が付けられていることに注意してください。
この楕円をアニメーションするためには名前が必要なのです。 これでアニメーションさせるオブジェクトが手に入りました。 次のステップは、アニメーションを開始するための EventTrigger の作成です。 step 2: EventTrigger の作成EventTrigger を何かが始動させると、その動作を実行します。 名前が示すとおり、"何か" とはイベントのことで、その RoutedEvent プロパティで指定されます。 アニメーションを開始するためには EventTrigger が必要であり、 その動作には BeginStoryboard を使います。 また、アニメーションを始動させるイベントを決める必要があります。
今のところ、EventTrigger はひとつのイベント、つまり Loaded イベントしかサポートしていないので、これは簡単なことです。
RoutedEvent プロパティには [hide XAML] <Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Canvas.Triggers> <EventTrigger RoutedEvent="Canvas.Loaded"> <EventTrigger.Actions> <BeginStoryboard> <!-- Insert Storyboard here. --> </BeginStoryboard> </EventTrigger.Actions> </EventTrigger> </Canvas.Triggers> <Ellipse x:Name="ellipse" Height="20" Width="20" Canvas.Left="30" Canvas.Top="30" Fill="black"/> </Canvas> [hide] [restart] さあ、これで Storyboard とアニメーションを作成する準備ができました。 step 3: Storyboard とアニメーションの作成Storyboard は、ひとつ以上のアニメーションを記述し、制御できます。 この例では、ひとつのアニメーションしか使いません。 Silverlight では、アニメーションをプロパティに割り当てて使います。 Ellipse の Canvas.Left プロパティを アニメーションさせるために DoubleAnimation を使います。 DoubleAnimation を使うのはアニメーションさせるプロパティ、 Canvas.Left が Double (倍精度浮動小数点数)型だからです。 アニメーションを処理するために、対象となる名前( (必要なら "restart" をクリックしてください。クイックスタートのアニメーションは、このページの以前のサンプルを見た時に、すでに開始されているかもしれないためです。Duration と RepeatBehavior の設定を変えることで、コードを再読み込みして再開するまでアニメーションが開始しないようにできます。) [hide XAML] <Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Canvas.Triggers> <EventTrigger RoutedEvent="Canvas.Loaded"> <EventTrigger.Actions> <BeginStoryboard> <Storyboard> <DoubleAnimation Storyboard.TargetName="ellipse" Storyboard.TargetProperty="(Canvas.Left)" To="300" Duration="0:0:1" /> </Storyboard> </BeginStoryboard> </EventTrigger.Actions> </EventTrigger> </Canvas.Triggers> <Ellipse x:Name="ellipse" Height="20" Width="20" Canvas.Left="30" Canvas.Top="30" Fill="black"/> </Canvas> [hide] [restart] DoubleAnimation を使ったのは、アニメーションした Canvas.Left が Double 型であるためです(Double は倍精度浮動小数点値です)。 おめでとう! これで最初の Silverlight アニメーションが作成できました。 Silverlight のアニメーション機構をもっと知るために、続けて以下をお読みください。 その他のアニメーションSilverlight は、色のアニメーション(ColorAnimation)や座標のアニメーション(PointAnimation)もサポートしています。色をアニメーションするときは、「色」と SolidColorBrush の違いを覚えておいてください。 図形の Stroke や Fill プロパティに、色名や16進数を指定すると、Silverlight は文字列を SolidColorBrush に変換します。 図形の Stroke や Fill をアニメーションするためには、 設定するプロパティの SolidColorBrush の Color プロパティを アニメーションする必要があります。 一般に、ブラシを使うプロパティをアニメーションしたい場合は、ブラシを定義するために色名や16進数よりも冗長な構文を使って、 名前を指定する方がよいでしょう。 以下の例は、2つの楕円の色をアニメーションします。最初の楕円の Fill は、
明示的に SolidColorBrush を使って設定されています。
この例は、SolidColorBrush に名前を与えて、Color プロパティを
アニメーションします。
2番目のアニメーションは、楕円の Fill は色名を使って設定されているので、もう少し複雑です。
マークアップが実行するとき、システムは適切な色の SolidColorBrush を作成し、
楕円を塗りつぶすために使います。名前をつけるのに [hide XAML] <Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Canvas.Triggers> <EventTrigger RoutedEvent="Canvas.Loaded"> <EventTrigger.Actions> <BeginStoryboard> <Storyboard> <ColorAnimation Storyboard.TargetName="e1_brush" Storyboard.TargetProperty="Color" From="Red" To="Blue" Duration="0:0:5" /> <ColorAnimation Storyboard.TargetName="e2" Storyboard.TargetProperty="(Fill).(Color)" From="Red" To="Blue" Duration="0:0:5" /> </Storyboard> </BeginStoryboard> </EventTrigger.Actions> </EventTrigger> </Canvas.Triggers> <Ellipse Height="100" Width="100" Canvas.Left="30" Canvas.Top="30"> <Ellipse.Fill> <SolidColorBrush x:Name="e1_brush" Color="black"/> </Ellipse.Fill> </Ellipse> <Ellipse x:Name="e2" Fill="Black" Height="100" Width="100" Canvas.Left="30" Canvas.Top="130"/> </Canvas> [hide] [restart] Timeline のプロパティStoryboard と DoubleAnimation は、どちらも Timeline オブジェクトです。Timelines は、便利なプロパティをたくさん持っています。
以下の例は、これらの Timeline プロパティを示しています。 [hide XAML] <Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Canvas.Triggers> <EventTrigger RoutedEvent="Canvas.Loaded"> <EventTrigger.Actions> <BeginStoryboard> <Storyboard Storyboard.TargetName="e1" Storyboard.TargetProperty="(Canvas.Left)" BeginTime="0:0:1"> <DoubleAnimation To="300" /> <DoubleAnimation To="300" Storyboard.TargetName="e2"/> <DoubleAnimation To="80" Storyboard.TargetName="e3" Storyboard.TargetProperty="Width"/> <DoubleAnimation From="200" To="300" Storyboard.TargetName="e4"/> <DoubleAnimation To="300" Duration="0:0:5.3" Storyboard.TargetName="e5"/> <DoubleAnimation FillBehavior="HoldEnd" To="200" Storyboard.TargetName="e6"/> <DoubleAnimation FillBehavior="Stop" To="200" Storyboard.TargetName="e7"/> <DoubleAnimation RepeatBehavior="Forever" To="300" Storyboard.TargetName="e8"/> </Storyboard> </BeginStoryboard> </EventTrigger.Actions> </EventTrigger> </Canvas.Triggers> <Ellipse x:Name="e1" Fill="Black" Height="20" Width="20" Canvas.Left="30" Canvas.Top="30"/> <TextBlock Canvas.Left="0" Canvas.Top="30">e1</TextBlock> <Ellipse x:Name="e2" Fill="Red" Height="20" Width="20" Canvas.Left="30" Canvas.Top="50"/> <TextBlock Canvas.Left="0" Canvas.Top="50" Foreground="Red">e2</TextBlock> <Ellipse x:Name="e3" Fill="Purple" Height="20" Width="20" Canvas.Left="30" Canvas.Top="70"/> <TextBlock Canvas.Left="0" Canvas.Top="70" Foreground="Purple">e3</TextBlock> <Ellipse x:Name="e4" Fill="Blue" Height="20" Width="20" Canvas.Left="30" Canvas.Top="90"/> <TextBlock Canvas.Left="0" Canvas.Top="90" Foreground="Blue">e4</TextBlock> <Ellipse x:Name="e5" Fill="Green" Height="20" Width="20" Canvas.Left="30" Canvas.Top="110"/> <TextBlock Canvas.Left="0" Canvas.Top="110" Foreground="Green">e5</TextBlock> <Ellipse x:Name="e6" Fill="Black" Height="20" Width="20" Canvas.Left="30" Canvas.Top="130"/> <TextBlock Canvas.Left="0" Canvas.Top="130" Foreground="Black">e6</TextBlock> <Ellipse x:Name="e7" Fill="Orange" Height="20" Width="20" Canvas.Left="30" Canvas.Top="150"/> <TextBlock Canvas.Left="0" Canvas.Top="150" Foreground="Orange">e7</TextBlock> <Ellipse x:Name="e8" Fill="Red" Height="20" Width="20" Canvas.Left="30" Canvas.Top="170"/> <TextBlock Canvas.Left="0" Canvas.Top="170" Foreground="Red">e8</TextBlock> </Canvas> [hide] [restart] アニメーションの遷移値を指定するDoubleAnimation、ColorAnimation、 PointAnimation は From To プロパティを持っていて、 アニメーションするプロパティの最初と最後の値を指定できます。 From が指定されていなければ、プロパティの現在の値がアニメーションの開始値として使われます。 To を使って最終値を指定する代わりに By を使って、加算値を指定することもできます。 Copyright © 2007 Microsoft Corporation. All rights reserved. Legal Notices. |