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

从Flash到Silverlight进阶教程

用代码来创建动画

这节里将要讲述一个自定义用户控件最基本的操作,就好象Flash中的MovieClips一样,动态的将其添加到舞台上。

首先你将要看到如何用ActionScript来添加一个MC到舞台中。

让我们来看看在Flash中都做了什么。

  1. 新建flash文件
  2. 在第一帧添加两个按钮起好实例名称
  3. 导入一张图片,以中心注册为MovieClips,将链接标识符设置为“man”
  4. 新建立一层命名为“as”,添加如下代码

as2.0版本:

reset_btn.enabled = false;
add_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;
};
reset_btn.onRelease = function() {
    _root["man"].removeMovieClip();
    reset_btn.enabled = false;
    add_btn.enabled = true;
};

 as3.0 版本

package {
    import flash.display.MovieClip;
    import flash.events.*;

    public class Lession01a extends MovieClip
    {
        private    var addbtn;
        private    var resetbtn;
        private var m:Man;
        public function Lession01a()
        {
            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;
        }
        
        public function onAddbtnClick(e:MouseEvent):void {
            m = new Man();
            m.x=200;
            m.y=150;
            addChild(m);
            addbtn.enabled = false;
            resetbtn.enabled = true;
        }
        
        public function onResetbtnClick(e:MouseEvent):void {        
            removeChild(m);
            resetbtn.enabled = false;
            addbtn.enabled = true;
        } 
    }
}

package
{
    import flash.display.MovieClip;

    public class Man extends MovieClip
    {
        public function Man()
        {
            super();
        }
        
    }
}

 

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

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

新建项目,参考Silverlight初级教程-建立silverlight项目

首先用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
    {

        private man m;

        public Page()
        {
            InitializeComponent();

            Init();
        }


        private void Init()
        {
            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)
        {
            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)
        {
            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

转载请保留本博客链接

时间: 2024-09-19 14:34:35

从Flash到Silverlight进阶教程-用代码来创建动画的相关文章

从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.

silverlight如何在运行时用代码动态控制(或创建)动画

silverlight做一些复杂动画时,不可能所有的动画都事先用Blend之类的设计工具"画"好(或者在设计期就在vs里编好),很多时候我们希望在运行时能动态控制动画,或者凭空动态创建一段动画. sl3.0的官方sdk文档里有一节"以编程方式使用动画"讲的就是这个,今天研究了下整理分析于此: 对于事先"画"好(或者称之为在设计期准备好的动画),我们可以在运行时通过名字获取动画引用,进而改变某些属性: 1.示例1(代码来自sdk,以下同),运行时动

Silverlight初级教程-动画

Silverlight初级教程 动画 在这一节里将要用到在"认识工作区"中提到的时间抽了.这里将和学习flash的过程一样做一个最简单的动画. silverlight中的动画是以"storyboard"的形式表现出来."storyboard"你可以认为是flash中的时间轴.  flash中只有一个时间轴,而在silverlight中却可以有多个"storyboard". 在flash中是有一个帧频的概念的,例每秒12帧.每秒

Silverlight初级教程-绘图布局

Silverlight初级教程 绘图布局 正如之前所说Blend是和flash很像的东西.在这里将介绍一下如何在Blend中绘图. 这里的Blend中"舞台"的默认布局和flash中有些不同,大家都知道在flash中物体的都是有坐标"x,y"来定位的.在blend中舞台默认是 使用了Grid来对物体进行布局,这个Grid其实很像Html中的Table.这里暂时先跳过Grid.现在要尽量的flash相似.第一步就是要先把 舞台的布局改为和flash一样的方式. 打开B

BOSS制作教程+详细代码解释+源代码

教程|源代码 见截图先: OSS制作教程+详细代码解释+源代码-速卖通详细描述源代码"> 点击这里下载原文件 大家好,,,,第一次写这个东东~~心理好紧张挖```` 大家了很多的FLASH飞机游戏,,,但是真正象"灵动碰射"那样完整的少之又少,大部分都是没有BOSS的,,,只是在一个画面内循环出现敌机,趣味自然降低了不少... 近来FLASH8游戏版块新教程太少,我也写个教程,,算是对FLASH8游戏版块的一个回报:-) 在这里我只谈做BOSS的制作思想,其他的主角啊,

Flash Switch Case实例教程

Flash Switch  Case实例教程 厌倦了无休止的,如果...别的吗? Flash MX中增添了一个新的方式处理这个问题:开关.这一指示中已经存在的一些语言(脚本语言, PHP的角.. ) ,并允许您表达和评价作为一种替代,如果/人. 该教程 事实上,交换机( )不会带来什么新的脚本.它只是一种方式,如果写/别人有所不同.其工作原理如下: 您确定您有什么评价之间的( )的开关. 之间的( )的开关,您将采取行动,履行在特定情况下,也就是说当表达的情况下被评价为严格平等的表达,你"交换&

flash调用xml文件数据 程序代码

常见的问题时,我面对的使用新的编程语言在一个熟悉的编程环境,如闪光的是,我不知所措的新语法和创造性的解决方案,帮助两种语言互相沟通. Flash和XML的也不例外.如果您是在同一类别作为我来说,本教程的目的是与你记住.如果您不是在同一类别...好,你可能会仍希望本教程! 本教程将帮助您创建一个简单的,直截了当的例子,不偏离到不相干的职能,高效率的编码方法,等等如果这是您第一次尝试创建使用XML的东西在闪光,我相信这是更好地为您建立您的信任和创建一个简单的,例如工作,然后修改该例如在日益复杂的功能

flash as3.0的拖动物体代码

问题描述 flash as3.0的拖动物体代码 flash as3.0如何实现鼠标长按左键拖动影片剪辑,位置发生变化,松开后影片剪辑位置静止.(就像在win桌面上拖动一个文件夹到另一个位置 解决方案 Silverlight 2.0 PK Flash AS3.0Flash as3.0创建右键菜单[转]Flash.Flex.AS3.0框架及类库- 解决方案二: http://blog.sina.com.cn/s/blog_4909f3cb0100kkii.html 解决方案三: flash马上就要被

Silverlight实例教程 - Validation数据验证DataAnnotation机制和调试技巧

Silverlight 4 Validation验证实例系列 Silverlight实例教程 - Validation数据验证开篇 Silverlight实例教程 - Validation数据验证基础属性和事件 Silverlight实例教程 - Validation数据验证DataAnnotation机制和调试技巧 Silverlight实例教程 - Validation客户端同步数据验证 Silverlight实例教程 - Validation服务器端异步数据验证 Silverlight实例