从Flash到Silverlight进阶教程-Tweener

从Flash到Silverlight进阶教程

Tweener

在flash中有一个Tweener类,通过这个类我们可以通过代码来创建一些动画效果,这里将要介绍一下在Silverlight中如何像在flash中运用Tweener类一样来创建动画效果。
例子中使用的Flash Tweener类为:http://code.google.com/p/tweener/
ExpandedBlockStart.gif ContractedBlock.gif package  {
    import caurina.transitions.Tweener;
    
    import flash.display.MovieClip;
    import flash.events.MouseEvent;
    
    public class Lession02a extends MovieClip
ExpandedSubBlockStart.gifContractedSubBlock.gif    
{
        private 
var ol:OL;
        
        public 
function Lession02a()
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
this.ol = this.getChildByName("mol") as OL;
            
this.ol.addEventListener(MouseEvent.MOUSE_OVER,onMOUSE_OVER);
            
this.ol.addEventListener(MouseEvent.MOUSE_OUT,onMOUSE_OUT);
        }

        
ExpandedSubBlockStart.gifContractedSubBlock.gif        private 
function onMOUSE_OVER(e:MouseEvent):void{
ExpandedSubBlockStart.gifContractedSubBlock.gif            Tweener.addTween(
this.ol, {scaleX:1.2, scaleY:1.2, alpha:0.2, time:0.5, transition:"easeinoutback"});
        }

        
ExpandedSubBlockStart.gifContractedSubBlock.gif        private 
function onMOUSE_OUT(e:MouseEvent):void{
ExpandedSubBlockStart.gifContractedSubBlock.gif            Tweener.addTween(
this.ol, {scaleX:1, scaleY:1, alpha:1, time:0.5, transition:"easeinoutback"});
        }

    }

}

package
ExpandedBlockStart.gifContractedBlock.gif
{
    import flash.display.MovieClip;

    public class OL extends MovieClip
ExpandedSubBlockStart.gifContractedSubBlock.gif    
{
        public 
function OL()
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            super();
        }

        
    }

}
了解flash中Tween类的朋友我就不用多说,只要用上一次便会爱上她。flash中的Tween已经发展了很长的时间,功能也非常的强大,可以用来做很多很玄的效果。这么好的东西在Silverlight中当然也会有的,其名字为:agTweener    项目地址:www.codeplex.com/agTweener/    当然了他还刚刚开始远没有flash中的强大。
看看要实现同样的效果在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
ExpandedBlockStart.gifContractedBlock.gif
{
    
public partial class Page : UserControl
ExpandedSubBlockStart.gifContractedSubBlock.gif    
{
        
private OL ol;

        
public Page()
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            InitializeComponent();

            Init();
        }


        
private void Init()
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            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)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            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)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            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);
        }

    }

}

效果如下:

 

代码下载


作者:nasa
出处:nasa.cnblogs.com
联系:nasa_wz@hotmail.com

QQ:12446006

转载请保留本博客链接

转载于:https://www.cnblogs.com/nasa/archive/2008/09/11/1288782.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值