从Flash到Silverlight进阶教程-Tweener
从Flash到Silverlight进阶教程
Tweener
在flash中有一个Tweener类,通过这个类我们可以通过代码来创建一些动画效果,这里将要介绍一下在Silverlight中如何像在flash中运用Tweener类一样来创建动画效果。
例子中使用的Flash Tweener类为:http://code.google.com/p/tweener/
package {
import caurina.transitions.Tweener;
import flash.display.MovieClip;
import flash.events.MouseEvent;
public class Lession02a extends MovieClip
{
private var ol:OL;
public function Lession02a()
{
this.ol = this.getChildByName("mol") as OL;
this.ol.addEventListener(MouseEvent.MOUSE_OVER,onMOUSE_OVER);
this.ol.addEventListener(MouseEvent.MOUSE_OUT,onMOUSE_OUT);
}
private function onMOUSE_OVER(e:MouseEvent):void{
Tweener.addTween(this.ol, {scaleX:1.2, scaleY:1.2, alpha:0.2, time:0.5, transition:"easeinoutback"});
}
private function onMOUSE_OUT(e:MouseEvent):void{
Tweener.addTween(this.ol, {scaleX:1, scaleY:1, alpha:1, time:0.5, transition:"easeinoutback"});
}
}
}
package
{
import flash.display.MovieClip;
public class OL extends MovieClip
{
public function OL()
{
super();
}
}
}
了解flash中Tween类的朋友我就不用多说,只要用上一次便会爱上她。flash中的Tween已经发展了很长的时间,功能也非常的强大,可以用来做很多很玄的效果。这么好的东西在Silverlight中当然也会有的,其名字为:agTweener 项目地址:www.codeplex.com/agTweener/ 当然了他还刚刚开始远没有flash中的强大。
看看要实现同样的效果在Silverlight中该怎么样做。
新建项目,参考Silverlight初级教程-建立silverlight项目 。
调整舞台布局和Flash一样,参考Silverlight初级教程-绘图布局 。
在flash中引用了Tweener类库
import caurina.transitions.Tweener;
在Silverlight中也是一样,需要引用Tweener类库。右键点击新建立的解决方案选择Add->Existing Project 选中刚才下载agTweener项目
右键点击Silverlight项目选择Add Reference
在弹出的对话框中选择Project选项卡,选中agTweener项目
好准备工作做好了。
制作一个自定义用户控件,注意目录结构的排放。参考从Flash到Silverlight进阶教程-用代码来创建动画中的用Blend设计UI这一节。
打开Page.xaml.cs
这里说明下"LayoutRoot"为silverlight默认的根容器,这个名字一般不会去改动他。
修改page类为如下代码。
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;
using Lession02b.Components;
using agTweener;
namespace Lession02b
{
public partial class Page : UserControl
{
private OL ol;
public Page()
{
InitializeComponent();
Init();
}
private void Init()
{
ol = new OL();
ol.SetValue(Canvas.TopProperty, (double)150);
ol.SetValue(Canvas.LeftProperty, (double)200);
LayoutRoot.Children.Add(ol);
TransformGroup _TransformGroup = new TransformGroup();
ScaleTransform _ScaleTransform = new ScaleTransform();
SkewTransform _SkewTransform = new SkewTransform();
RotateTransform _RotateTransform = new RotateTransform();
TranslateTransform _TranslateTransform = new TranslateTransform();
_TransformGroup.Children.Add(_ScaleTransform);
_TransformGroup.Children.Add(_SkewTransform);
_TransformGroup.Children.Add(_RotateTransform);
_TransformGroup.Children.Add(_TranslateTransform);
ol.RenderTransform = _TransformGroup;
ol.MouseEnter += new MouseEventHandler(ol_MouseEnter);
ol.MouseLeave += new MouseEventHandler(ol_MouseLeave);
}
void ol_MouseEnter(object sender, MouseEventArgs e)
{
TweenParameter _tween = new TweenParameter();
_tween.Opacity = .2;
_tween.ScaleX = 1.2;
_tween.ScaleY = 1.2;
_tween.time = 0.5;
_tween.transition = TransitionType.easeInOutBack;
Tweener.addTween(sender as OL, _tween);
}
void ol_MouseLeave(object sender, MouseEventArgs e)
{
TweenParameter _tween = new TweenParameter();
_tween.Opacity = 1;
_tween.ScaleX = 1;
_tween.ScaleY = 1;
_tween.time = 0.5;
_tween.transition = TransitionType.easeInOutBack;
Tweener.addTween(ol, _tween);
}
}
}
效果如下:
- Kettle 添加对应hadoop版本的支持
- Layui常用方法
- 使用Identity Server 4建立Authorization Server (4)
- 使用Identity Server 4建立Authorization Server (3)
- 使用Identity Server 4建立Authorization Server (2)
- 使用Identity Server 4建立Authorization Server (1)
- Java之异常处理
- 挖洞经验 | 看我如何利用SAML漏洞实现Uber内部聊天系统未授权登录
- 使用ichartjs生成图表
- 使用angular4和asp.net core 2 web api做个练习项目(四)
- list.add(),向List集合插入对象报空指针异常
- 使用angular4和asp.net core 2 web api做个练习项目(三)
- 即学即用系列一:纯函数
- Java之StringBuffer,StringBuilder,Math,Date,SimpleDateFormat,UUID,File
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 容器共享GPU时查看容器使用的GPU编号
- oci runtime error: exec failed: container_linux.go:247: starting container process caused “exec: “/
- R|UpSet-集合可视化
- 美国队长的盾(一) 同心圆
- R|clusterProfiler-富集分析
- R|fastqcr QC数据处理
- R|timeROC-分析
- R|ML_code-线性回归(2)
- R|机器学习入门-多元线性回归(3)
- Bioinfo|bedtools-操作VCF文件
- 美国队长的盾(二)五角星
- 绘图系列|R-VennDiagram包绘制韦恩图
- Linux高精度定时器hrtimer使用实例
- 数据分析|R-缺失值处理
- k8s中pod的自动扩缩容