[Windows 8 App]動畫特效------偏移特效

[Windows 8 App]動畫特效------偏移特效

 

我們有介紹過旋轉中心的旋轉角度

[Windows 8 App]動畫特效-----旋轉中心

 

這裡我們將進一步地介紹如何對旋轉對象進行平移

這裡我們先介紹幾個屬性:

LocalOffsetX:沿旋轉對象平面的X軸平移

LocalOffsetY:沿旋轉對象平面的Y軸平移

LocalOffsetZ:沿旋轉對象平面的Z軸平移

GlobalOffsetX:沿著與屏幕對齊的X軸平移

GlobalOffsetY:沿著與屏幕對齊的Y軸平移

GlobalOffsetZ:沿著與屏幕對齊的Z軸平移

 

上述的這三個屬性LocalOffsetX、LocalOffsetY和LocalOffsetZ

可以使介面元素沿著X軸、Y軸與Z軸平移

如果在平移的同時還伴隨著旋轉,那麼會影響到元素平移的方向

而這三個屬性GlobalOffsetX、GlobalOffsetY和GlobalOffsetZ

即使元素在平移的同時還伴隨著旋轉

也不會影響到元素的平移方向

意思是說元素會在屏幕所在的平面進行平移

 

下面將透過範例來介紹偏移特效

首先,新增一個專案【Dynamic3DAnimation】

開啟【MainPage.xaml】,這是【MainPage.xaml】的完整程式碼:


<Page
    x:Class="Dynamic3DAnimation.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:Dynamic3DAnimation"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <Grid Background="Gray">
        <Grid.Resources>
            <Storyboard x:Name="storyboard">
                <DoubleAnimation Duration="0:0:5" Storyboard.TargetName="MyPlaneProjection" Storyboard.TargetProperty="RotationY" To="360" RepeatBehavior="forever" />
                <DoubleAnimation Duration="0:0:5" Storyboard.TargetName="MyPlaneProjection" Storyboard.TargetProperty="LocalOffsetX" To="120" RepeatBehavior="forever" />
            </Storyboard>
        </Grid.Resources>
        <StackPanel Width="400" Height="400" Background="Green" >
            <Image Width="400" Height="400" PointerPressed="StartAnimation_Click" Source="image/LOGO.jpg">
                <Image.Projection>
                    <PlaneProjection x:Name="MyPlaneProjection" />
                </Image.Projection>
            </Image>
        </StackPanel> 
    </Grid>
</Page>

 

上面的程式碼中,首先在Grid元素的Grid.Resources中添加一個Storyboard元素

接著在storyboard元素中添加兩個DoubleAnimation動畫

並分別設定這兩個DoubleAnimation動畫的屬性值為RotationY和LocalOffsetX

用來控制介面的旋轉與平移

同時設定這兩個DoubleAnimation動畫的動畫週期為3秒,並設置RepeatBehavior值為Forever

接著在Grid元素中添加一個StackPanel元素,然後定義此元素的StartAnimation_Click事件處理方法,用來控制動畫的播放

最後,開啟【MainPage.xaml.cs】來輸入StartAnimation_Click事件處理方法的程式碼:

 


private void StartAnimation_Click(object sender, PointerRoutedEventArgs e)
{
    storyboard.Begin();
}

 

執行專案,影片如下: