从Flash到Silverlight进阶教程-用代码来创建动画

简介: 从Flash到Silverlight进阶教程 用代码来创建动画 这节里将要讲述一个自定义用户控件最基本的操作,就好象Flash中的MovieClips一样,动态的将其添加到舞台上。 首先你将要看到如何用ActionScript来添加一个MC到舞台中。

从Flash到Silverlight进阶教程

用代码来创建动画

这节里将要讲述一个自定义用户控件最基本的操作,就好象Flash中的MovieClips一样,动态的将其添加到舞台上。
首先你将要看到如何用ActionScript来添加一个MC到舞台中。
让我们来看看在Flash中都做了什么。
  1. 新建flash文件
  2. 在第一帧添加两个按钮起好实例名称
  3. 导入一张图片,以中心注册为MovieClips,将链接标识符设置为“man”
  4. 新建立一层命名为“as”,添加如下代码
as2.0版本:
reset_btn.enabled  =   false ;
img_405b18b4b6584ae338e0f6ecaf736533.gifimg_1c53668bcee393edac0d7b3b3daff1ae.gifadd_btn.onRelease 
=   function ()  {
    
var n:Number = _root.getNextHighestDepth();
    
var tx:Number = 400/2;
    var ty:Number = 300/2;
    _root.attachMovie("man","man",n);
    _root[
"man"]._x = tx;
    _root[
"man"]._y = ty;
    add_btn.enabled 
= false;
    reset_btn.enabled 
= true;
}
;
img_405b18b4b6584ae338e0f6ecaf736533.gifimg_1c53668bcee393edac0d7b3b3daff1ae.gifreset_btn.onRelease 
=   function ()  {
    _root[
"man"].removeMovieClip();
    reset_btn.enabled 
= false;
    add_btn.enabled 
= true;
}
;

 as3.0 版本

img_405b18b4b6584ae338e0f6ecaf736533.gif img_1c53668bcee393edac0d7b3b3daff1ae.gif package  {
    import flash.display.MovieClip;
    import flash.events.
*;

    public class Lession01a extends MovieClip
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif    
{
        private    
var addbtn;
        private    
var resetbtn;
        private 
var m:Man;
        public 
function Lession01a()
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif        
{
            addbtn 
= this.getChildByName("add_btn");
            resetbtn 
= this.getChildByName("reset_btn");
            addbtn.addEventListener(MouseEvent.CLICK,onAddbtnClick);
            resetbtn.addEventListener(MouseEvent.CLICK,onResetbtnClick);
            //trace(addbtn);
            resetbtn.enabled 
= false;
        }

        
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif        public
function onAddbtnClick(e:MouseEvent):void {
            m 
= new Man();
            m.x
=200;
            m.y
=150;
            addChild(m);
            addbtn.enabled 
= false;
            resetbtn.enabled 
= true;
        }

        
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif        public 
function onResetbtnClick(e:MouseEvent):void {        
            removeChild(m);
            resetbtn.enabled 
= false;
            addbtn.enabled 
= true;
        }
 
    }

}


package
img_405b18b4b6584ae338e0f6ecaf736533.gifimg_1c53668bcee393edac0d7b3b3daff1ae.gif
{
    import flash.display.MovieClip;

    public class Man extends MovieClip
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif    
{
        public 
function Man()
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif        
{
            super();
        }

        
    }

}

 

在flash中你只写了一次代码,而其他的都是在可视的状态下完成的,比如说这个MovieClips,你并没有写一句代码,但是已有很多的你看不到的代码falsh的IDE已经帮你都完成了。你可以在可视的状态下继续修改这个MovieClips。但是你不会看到他的代码。而在Silverlight中所有的的元素包括动画等都是通过XAML来描述的,你始终都能看到他的源代码,这个也可以说是Silverlight和Flash最大的不同。这里你会感觉到Silverlight更像以MXML来描述自身的Flex。


在下边我会以Silverlight来重新制作上边的例子,这里以Visual Studio 2008和Blend来做开发环境。Visual Studio 2008来实现后台代码的逻辑,Blend来做前台UI效果的展示。


首先用Blend设计UI

调整舞台布局和Flash一样,参考 Silverlight初级教程-绘图布局

创建自定义用户控件,参考 Silverlight初级教程-库。可以在如要放置的文件夹下点击右键选择add new item。不要忘记转换绘图布局。
这里要先向项目里添加一个图片。由于silverlight还在发展阶段,建立项目结构的规范还在探索中,这里先以Flex项目的规范来做参考建立silverlight。在根目录建立文件夹“assets”。项目里用到的所有素材文件都放到里边。按照素材文件种类的不同分别建立文件夹。例如果是图片就放到“assets/img/”文件夹下。根目录下建立“Components”目录所有制作的自定义用户控件都放到这里,根据控件类型的不同在分别建立子文件夹。这里文件夹就相当于Flash中的库。

这里在说明下,其注册点都以左上角为0,0点注册,要以像flash中一样以中心注册需要手动的将图片向左上方移动。如图所示:


在舞台上添加两个按钮,并设置好其name属性。

用Visual Studio 2008编写后台逻辑代码

打开Page.xaml.cs
这里说明下"LayoutRoot"为silverlight默认的根容器,这个名字一般不会去改动他。
修改page类为如下代码。
   public   partial   class  Page : UserControl
img_405b18b4b6584ae338e0f6ecaf736533.gifimg_1c53668bcee393edac0d7b3b3daff1ae.gif    
{

        
private man m;

        
public Page()
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif        
{
            InitializeComponent();

            Init();
        }



        
private void Init()
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif        
{
            reset_btn.IsEnabled 
= false;
            add_btn.Click 
+= new RoutedEventHandler(add_btn_Click);
            reset_btn.Click 
+= new RoutedEventHandler(reset_btn_Click);
        }


        
void add_btn_Click(object sender, RoutedEventArgs e)
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif        
{
            m 
= new man();
            m.SetValue(Canvas.TopProperty, (
double)150);
            m.SetValue(Canvas.LeftProperty, (
double)200);

            LayoutRoot.Children.Add(m);

            add_btn.IsEnabled 
= false;
            reset_btn.IsEnabled 
= true;
        }


        
void reset_btn_Click(object sender, RoutedEventArgs e)
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif        
{
            LayoutRoot.Children.Remove(m);

            add_btn.IsEnabled 
= true;
            reset_btn.IsEnabled 
= false;
        }



    }

好了silverlight完成的效果如下:


剩下请大家自己体会下flash和silverlight开发的不同吧。

代码下载

 


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

QQ:12446006

转载请保留本博客链接



相关文章
|
容器
Silverlight & Blend动画设计系列二:旋转动画(RotateTransform)
原文:Silverlight & Blend动画设计系列二:旋转动画(RotateTransform)   Silverlight的基础动画包括偏移、旋转、缩放、倾斜和翻转动画,这些基础动画毫无疑问是在Silverlight中使用得最多的动画效果,其使用也是非常简单的。
969 0
|
容器 数据可视化 内存技术
Silverlight & Blend动画设计系列一:偏移动画(TranslateTransform)
原文:Silverlight & Blend动画设计系列一:偏移动画(TranslateTransform)   用户界面组件、图像元素和多媒体功能可以让我们的界面生动活泼,除此之外,Silverlight还具备动画功能,它可以让应用程序“动起来”。
796 0
Silverlight & Blend动画设计系列四:倾斜动画(SkewTransform)
原文:Silverlight & Blend动画设计系列四:倾斜动画(SkewTransform)   Silverlight中的倾斜变化动画(SkewTransform)能够实现对象元素的水平、垂直方向的倾斜变化动画效果。
797 0
|
容器
Silverlight & Blend动画设计系列五:故事板(StoryBoards)和动画(Animations)
原文:Silverlight & Blend动画设计系列五:故事板(StoryBoards)和动画(Animations)   正如你所看到的,Blend是一个非常强大的节约时间的设计工具,在Blend下能够设计出很多满意的动画作品,或许他具体是怎么实现的,通过什么方式实现的我们还是一无所知。
912 0
Silverlight & Blend动画设计系列七:模糊效果(BlurEffect)与阴影效果(DropShadowEffect)
原文:Silverlight & Blend动画设计系列七:模糊效果(BlurEffect)与阴影效果(DropShadowEffect)   模糊效果(BlurEffect)与阴影效果(DropShadowEffect)是两个非常实用和常用的两个特效,比如在开发相册中,可以对照片的缩略图添加模糊效果,在放大照片的过程中动态改变照片的大小和模糊的透明度来达到一个放大透明的效果。
1051 0
Silverlight & Blend动画设计系列六:动画技巧(Animation Techniques)之对象与路径转化、波感特效
原文:Silverlight & Blend动画设计系列六:动画技巧(Animation Techniques)之对象与路径转化、波感特效   当我们在进行Silverlight & Blend进行动画设计的过程中,可能需要设计出很多效果不一的图形图像出来作为动画的基本组成元素。
1007 0
|
API
Silverlight & Blend动画设计系列十:Silverlight中的坐标系统(Coordinate System)与向量(Vector)运动
原文:Silverlight & Blend动画设计系列十:Silverlight中的坐标系统(Coordinate System)与向量(Vector)运动   如果我们习惯于数学坐标系,那么对于Silverlight中的坐标系可能会有些不习惯。
1233 0