Silverlight2 边学边练 之三 小球自由落体
终于看到动画章节了,本篇主要针对物体移动、变形和渐变移动进行练习。
完成小球自由落体慢镜实例,请大家多多拍砖,废话少说快快操练。
XAML Code:
<UserControl x:Class="FallingBall.Page" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="400" Height="300"> <!--小球动画轨迹--> <UserControl.Resources> <!--创建Storyborad--> <Storyboard x:Name="fallDown" Storyboard.TargetName="ellipseFall"> <!--水平移动轨迹--> <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(Canvas.Left)"> <!--下落水平移动--> <SplineDoubleKeyFrame KeyTime="0:0:5" Value="50"/> <!--弹起水平移动--> <SplineDoubleKeyFrame KeyTime="0:0:9" Value="100"/> </DoubleAnimationUsingKeyFrames> <!--垂直移动轨迹--> <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(Canvas.Top)"> <!--下落垂直移动--> <SplineDoubleKeyFrame KeyTime="0:0:5" Value="250"/> <!--落地变形移动--> <SplineDoubleKeyFrame KeyTime="0:0:6" Value="255"/> <!--反弹变形移动--> <SplineDoubleKeyFrame KeyTime="0:0:7" Value="250"/> <!--反弹垂直移动--> <SplineDoubleKeyFrame KeyTime="0:0:9" Value="150"/> </DoubleAnimationUsingKeyFrames> <!--小球垂直变形--> <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Height"> <!--下落无变形--> <SplineDoubleKeyFrame KeyTime="0:0:5" Value="50"/> <!--压缩垂直变形--> <SplineDoubleKeyFrame KeyTime="0:0:6" Value="45"/> <!--反弹垂直变形--> <SplineDoubleKeyFrame KeyTime="0:0:7" Value="50"/> </DoubleAnimationUsingKeyFrames> <!--小球水平变形--> <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Width"> <!--下落无变形--> <SplineDoubleKeyFrame KeyTime="0:0:5" Value="50"/> <!--压缩水平变形--> <SplineDoubleKeyFrame KeyTime="0:0:6" Value="55"/> <!--反弹水平变形--> <SplineDoubleKeyFrame KeyTime="0:0:7" Value="50"/> </DoubleAnimationUsingKeyFrames> <!--光点移动轨迹--> <PointAnimationUsingKeyFrames Storyboard.TargetName="ellipseBrush" Storyboard.TargetProperty="GradientOrigin"> <!--落地光点移动--> <LinearPointKeyFrame KeyTime="0:0:5" Value="0.6,0.1"></LinearPointKeyFrame> <!--反弹光点移动--> <LinearPointKeyFrame KeyTime="0:0:9" Value="0.3,0.1"></LinearPointKeyFrame> </PointAnimationUsingKeyFrames> </Storyboard> </UserControl.Resources> <Grid x:Name="LayoutRoot" Background="White"> <Canvas> <!--创建小球--> <Ellipse x:Name="ellipseFall" Width="50" Height="50"> <Ellipse.Fill> <!--创建渐变产生光点效果--> <RadialGradientBrush x:Name="ellipseBrush" RadiusX="1" RadiusY="1" GradientOrigin="1,0.5"> <GradientStop Color="White" Offset="0"></GradientStop> <GradientStop Color="Blue" Offset="1"></GradientStop> </RadialGradientBrush> </Ellipse.Fill> </Ellipse> <!--创建地平线--> <Path Stroke="Black" Data="M0,300 L400,300 Z"/> </Canvas> </Grid> </UserControl>
C# Code:
namespace FallingBall { public partial class Page : UserControl { public Page() { InitializeComponent(); //开始动画 fallDown.Begin(); } } }
效果图:
参考自《Pro Silverlight2 in C# 2008》CHAPTER 9 ■ ANIMATION
下次要搞一个汽车人变形动画~~
作者:李敬然(Gnie)
出处:{GnieTech} (http://www.cnblogs.com/gnielee/)
版权声明:本文的版权归作者与博客园共有。转载时须注明本文的详细链接,否则作者将保留追究其法律责任。
出处:{GnieTech} (http://www.cnblogs.com/gnielee/)
版权声明:本文的版权归作者与博客园共有。转载时须注明本文的详细链接,否则作者将保留追究其法律责任。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述