对silverlight中DoubleAnimation的思考
来源:互联网 发布:三星一体机扫描软件 编辑:程序博客网 时间:2024/05/30 04:30
“深蓝色的右手”在他的C#开发WPF/Silverlight动画及游戏系列教程第一课中举了一个让方块动起来的例子,但是好多人反映DoubleAnimation通不过,这是因为作者的开发环境是WPF,这样DoubleAnimation可以带三个参数,但是在silverlight中,DoubleAnimation只有不带参数的构造函数,参考http://msdn.microsoft.com/en-us/library/system.windows.media.animation.doubleanimation(v=VS.95).aspx
这时,就要如下实现了,
xaml部分:
<UserControl x:Class="SilverlightAnimation2.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="8600" d:DesignWidth="800">
<Canvas x:Name="Carrier" Width="800" Height="600" Background="Silver" MouseLeftButtonDown="Carrier_MouseLeftButtonDown">
</Canvas>
</UserControl>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
namespace SilverlightAnimation2
{
public partial class MainPage : UserControl
{
Rectangle rect;
public MainPage()
{
InitializeComponent();
InitializeComponent();
rect = new Rectangle();
rect.Fill = new SolidColorBrush(Colors.Red);
rect.Width = 50;
rect.Height = 50;
rect.RadiusX = 5;
rect.RadiusY = 5;
Carrier.Children.Add(rect);
Canvas.SetLeft(rect, 0);
Canvas.SetTop(rect, 0);
}
private void Carrier_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
//创建移动动画
Point p = e.GetPosition(Carrier);
Storyboard storyboard = new Storyboard();
//创建X轴方向动画
//DoubleAnimation doubleAnimation = new DoubleAnimation(){
// Canvas.GetLeft(rect),
// p.X,
// new Duration(TimeSpan.FromMilliseconds(500))
//};
DoubleAnimation doubleAnimation = new DoubleAnimation();
doubleAnimation.From = Canvas.GetLeft(rect);
doubleAnimation.To = p.X;
doubleAnimation.Duration = new Duration(TimeSpan.FromMilliseconds(500));
Storyboard.SetTarget(doubleAnimation, rect);
Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath("(Canvas.Left)"));
storyboard.Children.Add(doubleAnimation);
//创建Y轴方向动画
//doubleAnimation = new DoubleAnimation(Canvas.GetTop(rect), p.Y, new Duration(TimeSpan.FromMilliseconds(500)));
doubleAnimation = new DoubleAnimation();
doubleAnimation.From = Canvas.GetTop(rect);
doubleAnimation.To = p.Y;
doubleAnimation.Duration = new Duration(TimeSpan.FromMilliseconds(500));
Storyboard.SetTarget(doubleAnimation, rect);
Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath("(Canvas.Top)"));
storyboard.Children.Add(doubleAnimation);
//将动画动态加载进资源内
if (!Resources.Contains("rectAnimation"))
{
Resources.Add("rectAnimation", storyboard);
}
//动画播放
storyboard.Begin();
}
}
}
- 对silverlight中DoubleAnimation的思考
- 百度百科中对silverlight的介绍
- silverlight中对绑定数据源的要求
- 对 Silverlight 4.0 中 RIAService 的理解
- 对思考的思考
- 对JavaScript开发中困扰的思考
- 对JavaScript开发中困扰的思考
- 对java中random的思考
- 头文件中对extern的思考
- 工作中对“快速阅读”的思考
- 对 Java 中 clone 方法的思考
- 对Java中递归的再思考
- 对Java8中distinct()的思考
- 对“C++中何时对变量分配存储空间”的思考
- 对无效思考的思考
- wpf DoubleAnimation对image控件进行缩放旋转
- 在 Silverlight 应用程序中实现对 FLV 视频格式的支持
- 对Silverlight中ObservableCollection自己的一点理解
- 相关的注册表参数
- Accelerators processing before CMFCPropertyGridCtrl
- VS 2008 Windows Media Player控件的使用技巧
- 盗版导致印度成为网络犯罪重灾区
- BaPi学习
- 对silverlight中DoubleAnimation的思考
- MFC Ribbon ShowContextCategories函数 获取Ribbon指针 Visual Studio 2010
- Oracle软件无法升级的问题解决过程
- Delphi XE程序设计系列 1-主从架构, 多层到JSON和REST
- 中断字符驱动程序
- 某sde服务问题排查简记
- 数据保护面面俱到
- 某SDE问题解决过程简记
- MFC Ribbon 改变Ribbon字体大小 Ribbon字体太小 模糊