SilverLight学习笔记--Silverlight中的动画创建与操作

合集下载

Silverlight几种常用动画的制作(简单实用)

Silverlight几种常用动画的制作(简单实用)
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Rectangle.Triggers>
</UserControl>
using System;
using System.Collections.Generic;
using System.Linq;
using ;
using System.Windows;
using System.Windows.Controls;
1.嵌入到控件内部的动画(其实是给控件注册Loaded事件并执行动画)
<Rectangle Fill="Red" x:Name="xp" Height="200" Width="200">
Байду номын сангаас <Rectangle.Triggers>
<EventTrigger RoutedEvent="Rectangle.Loaded">
//设置宽度动画
DoubleAnimation dawb1 = new DoubleAnimation();
dawb1.From = 0;
dawb1.To = Application.Current.MainWindow.Width;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;

Silverlight学习帮助

Silverlight学习帮助

一.Silverlight学习 (2)1.1 Silverlight概述 (2)1.2 Silverlight 结构 (3)1.2.1 Silverlight平台 (3)1.2.2 Silverlight 结构 (3)1.2.3 核心表示层组件 (4)1.2.4 NET Framework for Silverlight (4)1.2.5 附加Silverlight 编程功能 (5)1.3 Silverlight 3.0 环境的搭建 (6)二.开始第一个Silverlight工程 (6)2.1 Silverlight 应用程序项目文件 (8)2.1.1 Silverlight 应用程序项目包含以下配置、程序集引用和代码文件: (8)2.1.2 Silverlight 应用程序项目将包含对以下程序集的引用: (8)2.2 工程示例 (9)2.2.1 Silverlight工程的独立运行 (11)2.2.2 Silverlight中XAML页面的导航 (11)三.Silverlight的特点分析 (12)3.1 Silverlight 3概述 (13)3.2 Silverlight 3 特点之增强媒体特性 (13)3.3 Silverlight 3特性之强化丰富的体验 (14)3.4 Silverlight 3特性之提高富互联网应用的效率 (14)3.5 Silverlight 3增强特性之其它 (15)3.6 Expression Blend 3中的新特性 (15)四.Deep Zoom Composer (16)4.1 Deep Zoom技术原理简介 (16)4.2 开始第一个Deep Zoom Composer应用 (17)4.2.1 建立Deep Zoom图片 (18)4.2.2 将Deep Zoom图片添加到Silverlight工程 (20)4.3 Deep Zoom Composer正式版的特点分析 (21)4.3.1 Deep Zoom Composer正式版的特点之容易的交互式Deep Zoom体验 (22)4.3.2 Deep Zoom Composer正式版的特点之追踪分析 (22)4.3.3 Deep Zoom Composer正式版的特点之增强的DeepZoomPix播放器 (23)4.3.4 Deep Zoom Composer正式版的特点之让你的导出走得更远 (24)4.3.5 Deep Zoom Composer正式版的特点之更新的UI (24)4.3.6 Deep Zoom Composer正式版的特点之支持Smooth Streaming (24)五.JSON-RPC (25)5.1 JSON数据格式 (25)5.2 JSON数据格式转换 (25)5.2.1 JSON在java中的数据转换 (25)5.2.2 JSON数据格式在Silverlight中的转换 (26)5.3 JSON-RPC (27)5.3.1 JSON传输协议 (27)5.3.2 Silverlight对基于Http的服务发出请求 (27)一.Silverlight学习1.1Silverlight概述Microsoft Silverlight 是一种跨浏览器、跨平台的.NET Framework 实现,用于为Web 生成和提供下一代媒体体验和丰富的交互式应用程序(RIA)。

Silverlight学习笔记1

Silverlight学习笔记1
也就是说,对于.net framework 而言,它能支持 Silverlight,但对于 Silverlight 而言它是不 支持面向.net framework 的开发的. 这也就意味着如果你在开发 Silverlight 的应用程序的话, 那么你原有的基于.net framework 的东西是无法直接使用的.但在 vs2008 中可以调整一个 类库项目的属性转变当前的.net framework 的项目为一个.net framework for Silverlight 的项目. 设置步骤: 选中项目文件>右击>点击属性>在属性的"应用程序"中>>勾选"仅使用客户端框架" 现在我们其实面对了两个.net framework, 一个是传统的一个是面向 Silverlight. 虽然他们使 用不同的框架在开发,但他们两者有高度的相似度,几乎原来定义在.net framework 上基础类 在 Silverlight 的框架中都原封不动的保留下来,包括类的名称,用法等.这样做有一个好,我 们只需要引用不同框架下的相应程序集就可以实现从.net framekwork 到 Silverlight 的转变.
简单了解 Silverlight 平台
在开始了解 Silverlight 平台前,请看看先前章节中提到的 xap 包.你可以将 Hello word application(也许你完成了,如果没有你可以建立一个新的,直接编译就可以了)项目中位于 ClientBin 文件夹下的 HelloWorld.xap 复制到任何一个地方,将其后缀名由 xap 改成 zip.然 后用工具打开看看所谓的程序包里到底装了写什么东西. 如果你做的程序足够简单你会看到两个 文件 AppManifest.xaml 和 HelloWorld.dll 文件,这些文件会被下载到客户端,然后被客户端 runtime 运行. 这里经历了几个步骤:

C-开发WPFSilverlight动画及游戏系列教程1

C-开发WPFSilverlight动画及游戏系列教程1
Storyboard storyboard = new Storyboard。;
//创建X轴方向动画
DoubleA nimatio n doubleA ni mati on = new DoubleA nimatio n(
Can vas.GetLeft(rect),
p.X,
new Durati on( TimeSpa n.F romMillisec on ds(500))
开发的FLASH。
转入正题,网上已经有很多关于如何创建WPF/Silverlight动画的教程,但是均为使用Blend工具 制作,或直接写在xaml代码内的动画,这样往往造成很多朋友误以为其实WPF/Silverlight不就是MS
的Flash?诚然,如果您真的像那些教程里说的去开发WPF/Silverlight程序,我个人觉得一点意义都没
</ Window>
这段代码我创建了一个名叫Carrier的Canvas(画布)容器布局控件,并设置它的尺寸为800*600,
背景银色,最后注册一个鼠标在它上面点击的事件。那么为什么要选择Canvas作为容器呢?因为Canvas
可以实现它内部的控件任意的绝对定位,可以很方便的处理物体的移动。
界面容器元素布局好了,那么接下来就动态创建物体对象了:
一条绝对可行的思路,至于如何处理这些复杂的算法,那是仁者见仁,智者见智了,或许您写的算法比
我的更好呢。
多余的话不多说了,最后来句发自肺腑的话吧:本系列教程的书写编辑花费作者很多心血,没有
功劳也有苦劳哇,所以请需要转载的朋友们用突出的字体或颜色标明在您的文章开头,您的大力支持是
鼓励我不断写下去的动力。
//创建Y轴方向动画
doubleA ni mati on = new DoubleA ni mati on(

(2021年整理)SilverLight学习笔记--Silverligh之动态加载程序集(.DLL)

(2021年整理)SilverLight学习笔记--Silverligh之动态加载程序集(.DLL)

(完整版)SilverLight学习笔记--Silverligh之动态加载程序集(.DLL) 编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整版)SilverLight学习笔记--Silverligh之动态加载程序集(.DLL))的内容能够给您的工作和学习带来便利。

同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。

本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整版)SilverLight学习笔记--Silverligh之动态加载程序集(.DLL)的全部内容。

(完整版)SilverLight学习笔记-—Silverligh之动态加载程序集(。

DLL)编辑整理:张嬗雒老师尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布到文库,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是我们任然希望(完整版)SilverLight学习笔记-—Silverligh之动态加载程序集(.DLL) 这篇文档能够给您的工作和学习带来便利。

同时我们也真诚的希望收到您的建议和反馈到下面的留言区,这将是我们进步的源泉,前进的动力。

本文可编辑可修改,如果觉得对您有帮助请下载收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为 <(完整版)SilverLight学习笔记--Silverligh之动态加载程序集(。

DLL)〉这篇文档的全部内容.自定义TextEventArgs 事件参数类定义一个接口IEditUI}1。

2、定义用户编辑器类用与定义接口同样的方法,我们添加一个Silverlight类库项目,命名为:Implementation.新建后,解决方案如下图:在编写Implementation类的代码前,我们需要添加引用前面所定义的Interfaces接口,引用界面如图:using System;using ;using System.Windows;using System.Windows.Controls;using System.Windows。

Silverlight动画控制和创建

Silverlight动画控制和创建

Silverlight 动画创建和操作在 Silverlight 中,我们常使用 StoryBoard(故事板)来实现类似于动画的效 果。

Silverlight 2.0 动画分为以下几类: 1、ColorAnimation 2、DoubleAnimation 3、PointAnimation 在两个 在两个 在两个 Color Double Point 值之间做线性内插动画处理 值之间做线性内插动画处理 值之间做线性内插动画处理 Point 动画中内插4、 内插关键帧动画 - 在 Color 或 Double 或 关键帧,以做线性, 离散, 三次贝塞尔曲线的动画处理 5、动态改变动画 通过程序控制,动态地改变动画本例我们将建立上面所提的两种类型的动画(ColorAnimation 和 DoubleAnimation ),并以此为基础,示范: 1、如何在后台操作动画(运行,暂停,继续,终止) 2、如何在后台用代码动态设置动画中的有关参数 (如:AutoReverse,BeginTime,FillBehavior 等等) 3、如何在后对号动态地指派某个动画给指定的控件 4、如何在后台用代码动态地创建动画并指派给某个控件。

下面我们来完成我们的任务还是照常,我们首先建立新 Silverlight 应用程序,命名为:MyStoryBoard 在 Silverligth 项目 MyStoryBoard 下我们编辑 page.xaml 文件, 代码如下:<UserControlx:Class="MyStoryBoard.Page"xmlns="/winfx/2006/xaml/prese ntation" xmlns:x="/winfx/2006/xaml" Width="800" Height="400"> <UserControl.Resources> <Storyboard x:Name="leftEllipseStory" Completed="leftEllipseStory_Completed" Storyboard.TargetName="ellipseLeft"> <ColorAnimationUsingKeyFrames x:Name="animateCollor" BeginTime="00:00:00" Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush. Color)"> <SplineColorKeyFrame KeyTime="00:00:01" Value="#FF70FF00" /> </ColorAnimationUsingKeyFrames> <DoubleAnimationUsingKeyFrames x:Name="animateWidth" BeginTime="00:00:00" Storyboard.TargetProperty="(FrameworkElement.Width)"><SplineDoubleKeyFrame KeyTime="00:00:01" Value="90" /> </DoubleAnimationUsingKeyFrames> <DoubleAnimationUsingKeyFrames x:Name="animateHeight" BeginTime="00:00:00" Storyboard.TargetProperty="(FrameworkElement.Height)"> <SplineDoubleKeyFrame KeyTime="00:00:01" Value="120"/> </DoubleAnimationUsingKeyFrames> </Storyboard> </UserControl.Resources> <Canvas x:Name="LayoutRoot" Width="800" Height="380" Background="White"> <Ellipse x:Name="ellipseLeft" Fill="Aqua" Width="120" Height="90" Margin="60, 40,10,10" ></Ellipse> <Ellipse x:Name="ellipseRight" Fill="Bisque" Width="120" Height="90" Margin="220,40,10,10" ></Ellipse> <Button Height="30" x:Name="btnLeftOpen" Width="100"Content="开始"Margin="80,180,10,10" Width="100"Click="btnLeftOpen_Click" ></Button> <Button x:Name="btnLeftPause" Height="30" Content="暂停"Margin="80,220,10,10"Click="btnLeftPause_Click" ></Button> <Button x:Name="btnLeftResume" Width="100" Height="30" Content="继续"Margin="80,260,10,10" Click="btnLeftResume_Click"></Button> <Button x:Name="btnLeftStop" Height="30" Content="结束"Width="100"Margin="80,300,10,10"Click="btnLeftStop_Click"></Button><Button Width="100"x:Name="btnRightOpenAssign" Content="代码指派动画"Height="30"Margin="220,180,10,10"Click="btnRightOpenAssign_Click"></Button> <Button x:Name="btnRightOpenCreate" Width="100" Height="30" Content="代码创建动画"Margin="220,220,10,10" Click="btnRightOpenCreate_Click" ></Button> <Rectangle x:Name="popupMenu" Width="80" ></Rectangle> </Canvas> </UserControl> 分析上述代码,我们建立了:Height="40"1、两个椭圆形,分别命名为:ellipseLeft 和 ellipseRight,作为动画效果 的载体 2、 创建了三个动画, 其中一个 ColorAnimation 类型, 两个 DoubleAnimation 类型,它们都在一个 Storyboard 中(名为 leftEllipseStory),一开始,这个动 画默认的 Target 是 ellipseLeft。

基于Silverlight的网页动画开发研究

基于Silverlight的网页动画开发研究

基于Silverlight的网页动画开发研究摘要:Silverlight是微软近年推出的Web前端技术。

讨论了Silverlight 的特点和开发技术,以及XAML语言;在此基础上对基于Silverlight 技术进行网页动画开发进行了分析;重点探讨了基于Silverlight对页面元素进行二维和三维应用变换的方法。

关键词:Silverlight ; XAML;动画;变换1Silverlight概述WPF是微软近年推出的展示层开发框架,Silverlight的前身代号是“WPF/E”,也就是其Everywhere版本。

微软从2007-2010年发布了Silverlight的4个版本。

它作为一个浏览器插件,可以显示矢量图形、动画和视频。

要运行Silverlight就必须安装Microsoft 发布的插件。

Silverlight是一种跨浏览器、跨平台的技术。

它能够在常见的Web 浏览器中运行,包括IE、Firefox、Apple Safari,并可以在Windows 和Apple Mac平台上运行。

Silverlight是类似于Flash的解决方案。

Silverlight和Flash的主要区别是:一个Silverlight程序并不是传递给Flash播放器的一个编译好的二进制文件。

相反,所有的代码都是基于标准的,且图像使用了XAML。

Silverlight最值得关注之处在于,实际上就是它创建出的UI质量,它是真正以XAML格式进行数据传输,到用户前端后再解析为具体图像,文本的大小是非常小的,所以不会占用太多带宽。

Silverlight在安全边界(沙盒)中运行,无法采用与传统的.NET应用程序相同的方式访问文件系统和其它的系统资源。

默认情况下,限制对承载Silverlight插件的HTML页的访问。

2Silverlight技术框架Silverlight平台作为一个整体,由两个主要部分以及一个安装程序和更新组件组成。

Silverlight探秘系列课程 Silverlight 2快速入门(上)

Silverlight探秘系列课程 Silverlight 2快速入门(上)

Silverlight 系列课程29讲 SilverLight 2快速入门(上)苏鹏 MVP MSDN 特约讲师点击添加MSN机器人小新 为您收听下载MSDN中文网络广播课程加油助力!内容介绍• Silverlight 2动画设计 • 总结Level 200Silverlight2 动画设计• • • • 为数值类型属性添加动画效果 为 效 为颜色属性添加动画效果 启动、暂停、恢复、停止一个动画效果 高级动画属性设置为数值类型属性添加动 画效果• 使 使用x:name属性标示元素以便进行动画绘 行 绘 制 • 创建一个StoryBoard作为资源内容用于描述 动画 • 为StoryBoard添加动画内容 • 启动动画Demo• 设置属性动画为颜色属性添加动画效 果• 对颜色属性进行设置 行Demo• 颜色变化设置 变启动、暂停、恢复、停 止一个动画效果• StoryBoard的4个基本方法 个 方– – – – Begin() g ()方法开始动画 Pause()方法暂停动画 Resume()方法恢复暂停的动画 Stop()方法停止动画效果Demo• 设置一个可以自定义的动画 个 自定关键帧动画•通过定义关键帧来实现动画操作定实作Demo•使用Blend设置关键帧动画使总结•Silverlight2动画设计如需提出问题,请在此区域输入文字,并单击“问题和解答”右上方的“提问”按钮即可。

/chinahttp://forums microsoft com/china。

silverlight动画设计-飞船打子弹动画设计

silverlight动画设计-飞船打子弹动画设计

shipLocation.X -= shipSpeed.X;//减小距离左边界的距离
break;
case Key.Right:
shipLocation.X += shipSpeed.X;//
break;
case Key.Up:
shipLocation.Y -= shipSpeed.Y;//
break;
一个动画有很多帧组成,在每帧中都可以执行判断或操作
2021/7/13
4
新建项目MyGame
新建文件夹UserControls 把矢量图转换成的xaml文件拷贝入文件夹
UserControls 把xaml文件修改正确的namespace,再包
含到项目中(这两步不能反了,因为只要包 含到项目中就会生成cs文件) 如下格式
Bullet bullet;
private Point bulletLocation = new Point(0, 0);
private Point bulletSpeed = new Point(0, 20);
这里子弹要动态产生,要被多个事件使用
2021/13
13
在按下空白键事件中加代码
case Key.Space:
private void myKeyDown(object sender, KeyEventArgs e)
{
switch (e.Key)
{
case Key.Left:
shipLocation.X -= shipSpeed.X;
break;
case Key.Right:
shipLocation.X += shipSpeed.X;
<RotateTransform x:Name="myRotate" CenterX="48.6" CenterY="32"/>

(完整word版)SilverLight学习笔记--Silverligh之动态加载程序集(.DLL)

(完整word版)SilverLight学习笔记--Silverligh之动态加载程序集(.DLL)

自定义 TextEventArgs 事件参数类定义一个接口IEditUI}1.2、定义用户编辑器类用与定义接口同样的方法,我们添加一个Silverlight类库项目,命名为:Implementation。

新建后,解决方案如下图:在编写Implementation类的代码前,我们需要添加引用前面所定义的Interfaces接口,引用界面如图:Implementation项目下的Class1.cs代码如下:using System;using ;using System.Windows;using System.Windows.Controls;using System.Windows.Documents;using System.Windows.Ink;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Animation;using System.Windows.Shapes;using Interfaces; //需要引用Interfaces接口namespace Implementation{//在此我们定义Editor类,它必须要实现我们前面定义的IEditUI接口public class MyEditor: IEditUI{private TextBox textBox;private TextBlock textBlock;定义并实现IEditUI接口的TextChanged事件MyEditor的构造函数实现IEditUI接口的GetControls方法MyEditor界面中按钮Click事件,在此事件中激发IEditUI接口定义的TextChanged事件实现IEditUI接口的SetText方法}}1.3、进一步准备工作现在我们需要生成解决方案,生成后,我们需要找到Implementation项目的Bin目录下的Debug子目录,在此子目录下找到Implementation.dll,把它拷贝到SLDynamicLoadingAssembly.Web项目的ClientBin下备用(引用)。

Silverlight入门总结

Silverlight入门总结

实现双向绑定的BOOK类



实现INotifyPropertyChanged接口—使得 属性值一有变动就会通知所绑定的客户 端。 属性设置添加: NotifyPropertyChanged("BookTitle"); 实现INotifyPropertyChanged接口
实现接口
public event PropertyChangedEventHandler PropertyChanged; private void NotifyPropertyChanged(string propertyName) { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } }
结果如图
放映完毕
谢谢大家! 祝:2010年工作顺利!

打开VS2008,新建—项目—选择Silverlight应用程序
建立Silverlight项目

创建我们第一个项目,下一步
开发环境
预览窗口
编写XAML脚本
解决方案资源管理器
Silverlight应用程 序(客户端)
网页(服 务器端)
注意事项



“预览”窗口不具备互动性,并不 是交互式设计界面,设计时需将 控件从工具箱拖放到XAML视图 利用Microsoft Expression Blend 设计界面 可以在客户端的XAML页面,右 键选择“在Expression Blend中 打开”,进入设计模式。
示例总结

1、将详细页的所有控件组合成Canvas,并设x:Name=“Detail” 2、将所要显示信息的TextBox与每个字段绑定 Text="{Binding Mode=TwoWay, Path=Author}“

Silverlight Blend 动画设计与实例

Silverlight Blend 动画设计与实例

Silverlight & Blend动画设计与实例前言: (2)偏移动画(TranslateTransform) (4)旋转动画(RotateTransform) (7)缩放动画(ScaleTransform) (11)倾斜动画(SkewTransform) (16)故事板(StoryBoards)和动画(Animations) (19)动画技巧(Animation Techniques)之对象与路径转化、波感特效 (29)模糊效果(BlurEffect)与阴影效果 (34)拖放(Drag-Drop)操作与拖放行为 (38)动画(Animation)与视图状态管理 (45)坐标系统(Coordinate System)与向量(Vector)运动 (51)沿路径动画 (54)三角函数(Trigonometry)动画之自由旋转(Free-form rotation) (58)三角函数(Trigonometry)动画之飘落的雪花(Falling Snow) (64)前言:Microsoft Expression Blend作为一款功能齐全的专业设计工具,可用来针对基于 Microsoft Windows 和基于 Microsoft Silverlight 1.0 的应用程序制作精美复杂的用户界面。

Expression Blend 可让设计人员集中精力从事创作,而让开发人员集中精力从事编程工作。

Expression Blend 的工作原理在 Expression Blend 中,您可以在美工板上绘制形状、路径和控件,然后修改其外观和行为,从而直观地设计应用程序。

您可以导入图像、视频和声音。

在基于 Windows 的应用程序中,还可以导入和更改三维对象。

您可以创建用于动态显示设计的可视元素或音频元素的 Storyboard,并可以选择在用户与应用程序进行交互时触发这些 Storyboard。

在处理基于 Windows 的应用程序时,您可以重新设计已应用于基本控件的模板,使应用程序具有独特的外观和行为。

使用Silverlight入门

使用Silverlight入门

创建您的第一个应用程序我们需要做的第一件事情是启动Visual Studio并创建一个新的项目。

在您启动Visual Studio,选择“新建项目”菜单中选择:文件- >新建- >项目这将打开“新建项目”对话框中。

在左侧的“模板”列表中,选择Visual C#中(Visual Basic中也可),然后Silverlight的。

然后选择“项目类型的Silverlight应用。

现在的名字你的项目的HelloWorld,然后选择确定。

接下来打开的对话框中询问您是否要创建一个新的网站,或简单地用一个测试页。

对于本示例中,取消选择“在一个新的网站主机的Silverlight应用程序”。

我们将使用“测试页”选项。

开发Silverlight应用程序时,在使用“网站”选项有一些好处,但这个例子中,测试页就足够了。

这是有创造一个新的Silverlight项目。

下一步我们将添加一些功能的应用程序。

如果您没有看到解决方案资源管理器(通常在右侧窗口),您可以从“查看” - >“解决方案资源管理器。

在解决方案资源管理器中,有一些项目文件。

我们将在此QuickStart中使用的文件MainPage.xaml 中和MainPage.xaml.cs 。

如果您不熟悉使用XAML,XAML是一种基于XML的声明性语言,用于创建和布局的UI元素。

请参阅XAML快速入门上的XAML的更多信息。

cs文件是在C#代码隐藏文件。

通过局部类代码隐藏文件是同一个XAML文件。

代码隐藏和局部类的更多信息,请参见代码隐藏和分部类MSDN文章。

从代码中分离的用户界面,允许您创建声明XAML标记可见的用户界面元素,然后使用一个单独的代码隐藏文件,以响应事件和操作您在XAML中声明的对象。

这种分离使得它很容易为设计人员和开发人员一起工作,有效地在同一项目。

双击上MainPage.xaml中。

这将在主编辑器窗口中打开MainPage.xaml文件。

C#开发WPFSilverlight动画及游戏系列教程(GameTutorial):目录

C#开发WPFSilverlight动画及游戏系列教程(GameTutorial):目录

C#开发WPFSilverlight动画及游戏系列教程(GameTutorial):⽬录本系列教程的⽰例代码下载(感谢提供资源分流):第⼀部分源码:(1-20节)第⼆部分源码:(21-26节)第三部分源码:(27-30节)第四部分源码:(31-35节)第五部分源码:(37-38节WPF完)第六部分源码:[] [] [] [] [] [] [] [] [] []地图编辑器源码:素材来源于⽹络,请勿作商业⽤途)2009年11⽉10⽇是⼀个值得纪念的⽇⼦,根据本教程前40节移植的Silverlight-MMORPG游戏客户端引擎开源了,在线测试Demo地址:源码地址:另外关于本教程的⼏点说明: 1)所有的图⽚资源均来源于⽹络,请勿⽤于商业⽤途,否则后果⾃负。

2)本系列教程完全为本⼈原创,本⼈享有⽰例源码的所有权并与博客园共同享有该教程版权,请在本⼈许可的前提下进⾏相关使⽤,否则保留追究法律责任的权利。

本教程涉及的内容知识点均⾮常的新,有浅也有深,从多⾓度、⼴域⾯细致的对WPF/Silverlight动态动画如何构建游戏世界进⾏讲解。

不敢说国外,⾄少在⽬前国内市⾯上不会存在相同或类似内容的资料。

所以如果有需要转载的朋友请在您的⽇志或⽂章开头⽤明显的⽂字标识原⽂地址。

3)本系列教程为了演⽰的⽅便,前40节均以WPF窗体为载体进⾏游戏⽰例制作,但在能达到同样效果的⽅法取舍上,我均会选择使⽤WPF/Silverlight通⽤的⽅法,并且尽可能多的介绍不同的⽅法去实现同样的效果。

从41节开始,我将以Silverlight平台移植的版本作为⽰例游戏进⾏讲解。

4)本系列教程前40节每⼀节均对应⼀个窗⼝,例如第4节对应的⽰例窗体为Window4,以此类推。

(可以通过对App.xaml的StartupUri参数进⾏修改,实现不同的Window启动⾸选项);从41节开始,后⾯每节附带⼀个源码。

5)如果编译不通过1、可能为您的.NET版本问题(建议使⽤.NET3.5,开发⼯具为VS2008+sp1版本); 2、DLL⽂件的引⽤错误。

4.动画 Silverlight

4.动画 Silverlight

Blend基础-动画
基础动画
在动画中最简单的就是逐帧动画了,现在常见的gif动画就是逐帧动画。

他是由一系列的序列图片组成再逐一播放的。

在Blend中他提供了一个关键帧动画,你不必去制作、指定每一帧的动画图片,只要设置好关键的几个位置,Blend会自动帮你实现动画效果。

具体做法
把要制作动画的图片放入舞台中。

点击“对象和时间线”面板右侧的“+”新建立一个动画。

在弹出来的对话框中为动画起名字。

这时你会发现“对象和时间线”面板发声了变化。

按键“F6”或者从菜单中进行选择来切换工作区视图。

这样可以把时间线变长,便于操作。

在面板中先选中图片,在点击右侧的“+”,为这个图片创建一个关键帧。

向后移动黄色指针,黄色指针上方的数字是以秒为单位的,代表过去了多少时间。

这里我移动到1秒的位置,并且在1秒位置的时候改变图片的坐标属性。

循环动画,在面板中选中动画。

这时右侧的属性面板会出现这个动画的各种属性,是否循环、循环多少次、自动回放...
点击上方的播放按钮进行预览。

这样一个最基础的位移动画就制作完成了。

扩展
想要做更加的复杂的动画也是一样的,请扩展阅读以下两篇文章。

C_开发WPFSilverlight动画及游戏系列教程4

C_开发WPFSilverlight动画及游戏系列教程4

C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(三十七)(2) 时间:2010-02-23 博客园深蓝色右手主角始终处于游戏窗口的正中,那么它距离左边400像素,距离顶端300像素,因此,我们通过边缘法可以得出,只需要根据主角的x,y坐标计算出主角当前所处的地图切片代号。

以上图为例,此时主角所处的切片为2_3.jpg,那么我们只需加载2_3以及它周边的9张切片:1_2.jpg、2_2.jpg、3_2.jpg、1_3.jpg、2_3.jpg、3_3.jpg、1_4.jpg、2_4.jpg、3_4.jpg即可完美填充整个游戏窗口。

当然,填充用地图切片必须是自适应的,即时时根据主角所处位置来更换所需要切片。

理解原理后,代码实现起来就简单多了,首先我们需要修改地图Surface初始化代码:Canvas MapSurface;int mapSectionWidth, mapSectionHeight, mapSectionXNum, mapSectionYNum;/// <summary>/// 初始化地图地表层/// </summary>private void InitMapSurface(XElement args) {MapSurface = new Canvas() {Width = Convert.ToDouble(args.Attribute("Width").Value),Height = Convert.ToDouble(args.Attribute("Height").Value),};Add(MapSurface);mapSectionWidth =Convert.ToInt32(args.Attribute("SectionWidth").Value); mapSectionHeight =Convert.ToInt32(args.Attribute("SectionHeight").Value); mapSectionXNum = (int)(MapSurface.Width / mapSectionWidth);mapSectionYNum = (int)(MapSurface.Height / mapSectionHeight); }然后我们定义两个非常重要的切片定位用变量:int _leaderSectionX;/// <summary>/// 主角所处的切片X值/// </summary>public int leaderSectionX {get { return _leaderSectionX; }set { if (_leaderSectionX != value) { _leaderSectionX = value; ChangeMapSection(); } }}int _leaderSectionY;/// <summary>/// 主角所处的切片Y值/// </summary>public int leaderSectionY {get { return _leaderSectionY; }set { if (_leaderSectionY != value) { _leaderSectionY = value; ChangeMapSection(); } }}leaderSectionX和leaderSectionY分别为主角所处的切片X,Y值(对应切片命名中下划线“_”两端的值),其中任意一个更改后都将激发ChangeMapSection方法:Image mapSection;int startSectionX, startSectionY,endSectionX,endSectionY;/// <summary>/// 更新呈现的地图切片/// </summary>private void ChangeMapSection() {MapSurface.Children.Clear();if (leaderSectionX == 0) {startSectionX = 0; endSectionX = 2;} else if (leaderSectionX == mapSectionXNum - 1) { startSectionX = leaderSectionX - 2; endSectionX = leaderSectionX;} else {startSectionX = leaderSectionX - 1; endSectionX = leaderSectionX + 1;}if (leaderSectionY == 0) {startSectionY = 0; endSectionY = 2;} else if (leaderSectionY == mapSectionYNum - 1) { startSectionY = leaderSectionY - 2; endSectionY = leaderSectionY;} else {startSectionY = leaderSectionY - 1; endSectionY = leaderSectionY + 1;}for (int x = startSectionX; x <= endSectionX; x++) { for (int y = startSectionY; y <= endSectionY; y++) { mapSection = new Image() {Source =Super.getImage(string.Format("Map/{0}/Surface/{1}_{2}.jpg", mapCode.ToString(), x, y)),Width = mapSectionWidth,Height = mapSectionHeight,Stretch = Stretch.Fill,};MapSurface.Children.Add(mapSection);Canvas.SetLeft(mapSection, x * mapSectionWidth);Canvas.SetTop(mapSection, y * mapSectionHeight);}}}C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(三十七)(3) 时间:2010-02-23 博客园深蓝色右手这里我的处理是每次更换切片时都首先清除原有的9块切片,然后再添加新的9块切片到指定位置,终究是比较苯的办法,但实现起来简单;优化它的方法有两种:1)判断主角是向右移动到了新的切片上还是向左或是向下、向下,然后移除对应的3块再添加3块。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在Silverlight中,我们常使用StoryBoard(故事板)来实现类似于动画的效果。

Silverlight 2.0 动画分为以下几类:1、ColorAnimation - 在两个 Color 值之间做线性内插动画处理2、DoubleAnimation - 在两个 Double 值之间做线性内插动画处理3、PointAnimation - 在两个 Point 值之间做线性内插动画处理4、内插关键帧动画 - 在 Color 或 Double 或 Point 动画中内插关键帧,以做线性, 离散, 三次贝塞尔曲线的动画处理5、动态改变动画 - 通过程序控制,动态地改变动画本例我们将建立上面所提的两种类型的动画(ColorAnimation 和DoubleAnimation ),并以此为基础,示范:1、如何在后台操作动画(运行,暂停,继续,终止)2、如何在后台用代码动态设置动画中的有关参数(如:AutoReverse,BeginTime,FillBehavior等等)3、如何在后对号动态地指派某个动画给指定的控件4、如何在后台用代码动态地创建动画并指派给某个控件。

下面我们来完成我们的任务还是照常,我们首先建立新Silverlight应用程序,命名为:MyStoryBoard在Silverligth项目MyStoryBoard下我们编辑page.xaml文件,代码如下:<UserControl x:Class="MyStoryBoard.Page"xmlns="/winfx/2006/xaml/presentation"xmlns:x="/winfx/2006/xaml"Width="800" Height="400"><UserControl.Resources><Storyboard x:Name="leftEllipseStory" Completed="leftEllipseStory_Completed" Storybo ard.TargetName="ellipseLeft"><ColorAnimationUsingKeyFrames x:Name="animateCollor" BeginTime="00:00:00" Story board.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)"><SplineColorKeyFrame KeyTime="00:00:01" Value="#FF70FF00" /></ColorAnimationUsingKeyFrames><DoubleAnimationUsingKeyFrames x:Name="animateWidth" BeginTime="00:00:00" Story board.TargetProperty="(FrameworkElement.Width)"><SplineDoubleKeyFrame KeyTime="00:00:01" Value="90" /></DoubleAnimationUsingKeyFrames><DoubleAnimationUsingKeyFrames x:Name="animateHeight" BeginTime="00:00:00" Stor yboard.TargetProperty="(FrameworkElement.Height)"><SplineDoubleKeyFrame KeyTime="00:00:01" Value="120"/></DoubleAnimationUsingKeyFrames></Storyboard></UserControl.Resources><Canvas x:Name="LayoutRoot" Width="800" Height="380" Background="White"><Ellipse x:Name="ellipseLeft" Fill="Aqua" Width="120" Height="90" Margin="60, 40,10, 10" ></Ellipse><Ellipse x:Name="ellipseRight" Fill="Bisque" Width="120" Height="90" Margin="220,40, 10,10" ></Ellipse><Button x:Name="btnLeftOpen" Width="100" Height="30" Content="开始" Margin="80,180, 10,10" Click="btnLeftOpen_Click" ></Button><Button x:Name="btnLeftPause" Width="100" Height="30" Content="暂停" Margin="80,220, 10,10" Click="btnLeftPause_Click" ></Button><Button x:Name="btnLeftResume" Width="100" Height="30" Content="继续" Margin="80,26 0,10,10" Click="btnLeftResume_Click"></Button><Button x:Name="btnLeftStop" Width="100" Height="30" Content="结束" Margin="80,300, 10,10" Click="btnLeftStop_Click"></Button><Button x:Name="btnRightOpenAssign" Width="100" Height="30" Content="代码指派动画" Mar gin="220,180,10,10" Click="btnRightOpenAssign_Click"></Button><Button x:Name="btnRightOpenCreate" Width="100" Height="30" Content="代码创建动画" Mar gin="220,220,10,10" Click="btnRightOpenCreate_Click" ></Button><Rectangle x:Name="popupMenu" Height="40" Width="80" ></Rectangle></Canvas></UserControl>分析上述代码,我们建立了:1、两个椭圆形,分别命名为:ellipseLeft和ellipseRight,作为动画效果的载体2、创建了三个动画,其中一个ColorAnimation类型,两个DoubleAnimation类型,它们都在一个Storyboard中(名为leftEllipseStory),一开始,这个动画默认的Target是ellipseLeft。

3、我们还建立了四个按钮(btnLeftOpen,btnLeftPause,btnLeftPause,btnLeftStop)来控制动画的播放。

4、另外,我们建立了两个按钮分别名为btnRightOpenAssign和btnRightOpenCreate.其中,btnRightOpenAssign用于实现在后台代码动态地指派动画给指定控件,在此处,我们实现有后台代码动态地把原本指向ellipseLeft的动画动态地重新指派给ellipseRight,这样,在当我们点击btnRightOpenAssign按钮后,我们可以看到原先展示在ellipseLeft控件上的动画现在展示在了ellipseRight控件上了。

而btnRightOpenCreate按钮则实现用后台代码来动态地创建动画,然后把它指派给我们指定的ellipseRight控件,这是一个有淡出效果的动画。

后台代码分析:1、有关动画属性参数的设置代码//设置动画是否回卷操作leftEllipseStory.AutoReverse = true;//设置动画将要开始的时间,在此可设置其延迟开始的时间leftEllipseStory.BeginTime = System.TimeSpan.FromSeconds(1);//当动画到达其活动时间的结束时点时将如何动作leftEllipseStory.FillBehavior = FillBehavior.Stop;//修改RepeatBehavior属性方法示例#region RepeatBehavior示例一//leftEllipseStory.RepeatBehavior =RepeatBehavior.Forever; //设置重复动画的次数// 一个迭代 Count,指定时间线将要播放的次数;// 一个 Tim eSpan 值,指定此时间线活动周期的总长度;// 或者特殊值 Forever,指定时间线应该无限重复。

相关文档
最新文档