SilverLight學習之路(四)

來源:互聯網
上載者:User
七、動畫和互動
快到最後了,忽然間有點懶了,正好體現了黎明前的黑暗,一定得要緊牙關繼續下去才行啊:)
好了,給自己打完氣了,開始吧

1、根據一個例子來進入SilverLight的動畫世界
a. 找出將要進行動畫處理的控制項

<Ellipse x:Name="ellipse"
      Height="20" Width="20" Canvas.Left="30" Canvas.Top="30"
      Fill="black" />
也就是要給控制項聲明一個名字, x:Name

b. 建立EventTrigger
<Canvas.Triggers>
    <EventTrigger RoutedEvent="Canvas.Loaded">
      <EventTrigger.Actions>
        <BeginStoryboard>
         
          <!-- Insert Storyboard here. -->
        </BeginStoryboard>
      </EventTrigger.Actions>
    </EventTrigger>
  </Canvas.Triggers>
使用RoutedEvent指定事件,在BeginStoryboard中開始動畫
EventTrigger僅僅支援一個事件,那就是Loaded

c. 建立Storyboard和一個動畫
使用DoubleAnimation 來控制Canvas.Left,因為Canvas.Left是double型的
<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>

Duration是指動畫一共用多長時間,格式為hour:minute:second
To是指變化的最終值
Storyboard.TargetName是指將要進行動畫的控制項名
Storyboard.TargetProperty是指將要變化的屬性名稱

2、其他類型的動畫
SilverLight還支援其他類型的動畫,如ColorAnimation,PointAnimation等
多說無益,還是看例子吧
<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>

有兩種不同的方式表示顏色,並使其變化
一個是直接指定Fill屬性,另一個是聲明一個SolidColorBrush,再指定其color屬性
表現在動畫上,不同之處就是TargetProperty

3、Timelines的屬性
Storyboard 和 DoubleAnimation 都是Timeline類的子類
Timeline的一些有用屬性是
Storyboard.TargetName:
Storyboard.TargetProperty:
BeginTime:
Duration: 這個屬性除了設定時間間隔外,還有兩個特殊值 "Forever" 或"Automatic". 預設值

是 "Automatic".
FillBehavior: 是指在他停止運行時做的行為,有兩個值 Stop 或HoldEnd. "Stop" 將其屬性值

設定成剛剛開始動畫時的狀態; "HoldEnd" 表示動畫屬性將停止在最後那一刻的值上. 預設值是

"HoldEnd".
RepeatBehavior: 這個屬性可以有三種類型的值: 迴圈計數, 時間值, 或者是Forever. "Forever"

導致時間幀無線迴圈
例如,設定 RepeatBehavior 為"0:0:5" 然後 Duration 為 2.5 秒,這個動畫將運行兩次;迴圈

技術可以指定迴圈幾次,例如,4x,1x

<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>

4、需要特別指出的關於動畫的屬性
DoubleAnimation, ColorAnimation, 和PointAnimation都有以下重要的屬性
From:指定開始值
To:指定結束值
By:指定位移量

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.