从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

转载请保留本博客链接

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

  1. appinventor HTML5,App Inventor编程教程-第18课-创建动画应用

    本章将讨论另一类应用--包含简单动画(会移动的物体)的应用.你将学习用App Inventor创建二维游戏的基本知识,包括熟练使用精灵组件,以及处理像两个物体碰撞这样的事件. 当在电脑屏幕上看到一个平 ...

  2. STM32 进阶教程 14 - 程序加密之FLASH读写保护

    前言 在嵌入式应用开发中,应用开发完成后往往需要对芯片中的程序进行加密处理,用以保护程序安全(不至被竞争对手从芯片把程序固件考走),本节将给大学介绍一个如何实现程序自动给芯片加密功能.学完本节内容,你 ...

  3. STM32 进阶教程 13 – FLASH的读写操作

    前言 在嵌入式应用开发中,经常会遇到掉电后还要保存的信息,这些信息通常只能保存在外部的一些存储芯片中,如外部flash,外部EEPROM, 其实这些信息同样可以保存在STM32自带的内部flash中, ...

  4. STM32 进阶教程 11 - RAM中运行程序

    前言 上一讲我们讲到stm32可以将代码直接下载到RAM中时行程序调试,同时可以有效避开STM32 Flash 擦写次数有限问题,其实除了仿真调试时将程序设置在RAM中可以解决FLASH擦写次数问题外 ...

  5. STM32 进阶教程 10 - RAM中调试程序

    前言 在stm32开发过程中,程序调试是一个比较耗时且又重要的问题,特别是在固件代码达到一定的复杂度后,程序下载过程就一个比较耗时过程,同时STM32芯片有FLASH烧写次数有限,像103系列手册中标 ...

  6. NAS群晖DSM 进阶教程 篇三:DSM 4458 升级 DSM 4493 update7

    WOW唤醒NAS手机APP: Windows Phone 8.1测试可用"Wake my PC"的详细信息  http://www.windowsphone.com/s?app ...

  7. NSIS进阶教程(一)~(五)

    这问是在学NSIS的时候发现的,一篇绝顶好文,当时没转过来,现在美化完程序了,想着不美化安装包也太不厚道了点...所以... NSIS进阶教程(一) 来自: http://www.pylife.net ...

  8. Silverlight实例教程 - Validation数据验证开篇

    Silverlight 4 Validation验证实例系列 Silverlight实例教程 - Validation数据验证开篇 Silverlight实例教程 - Validation数据验证基础 ...

  9. JSP WEB开发入门基础到高手进阶教程002

    JSP WEB开发入门基础到高手进阶教程 -------开发入门 JSP与微软的Active Server Pages 兼容,但它是使用类似HTML的卷标以及Java程序代码段而不是VBScript. ...

最新文章

  1. 如何优雅的处理 Java 异常,可以参考这些建议
  2. 图灵5周年系列活动之科普大爆炸(免费!)
  3. 同事反馈环:为什么度量和会议还不够充分
  4. Ajax原理以及优缺点
  5. 一个简单的c++/cli中委托与事件的处理模型
  6. 【小白学PyTorch】 2.浅谈训练集验证集和测试集
  7. Couchbase应用示例(初探)
  8. [翻译] ASP.NET Core 3.0 的新增功能
  9. bzoj3482,jzoj3238-超时空旅行hiperprostor【最短路,凸包,斜率优化】
  10. 云计算时代企业内部IT人员的新定位
  11. Solr Facet技术的应用与研究
  12. 分享一下把pdftk的合并pdf功能添加到TC(Totalcommander)
  13. 涨姿势了!delete后加 limit是个好习惯么?
  14. J2EE MVC模式框架中,表单数据绑定功能不安全实现在Tomcat下造成的DoS及RCE
  15. String s = new String(“abc“)创建了几个对象
  16. element ui的el-option需要默认
  17. Linux内核配置之Kconfig
  18. 微分方程Gear方法MATLAB,matlab求解常微分方程(组)
  19. 函数重载与参数缺省值共用可能引起两意性
  20. HDU 6441 Find Integer

热门文章

  1. BZOJ1856:[SCOI2010]字符串
  2. 超越kmeans:聚类算法概述
  3. oracle数据库两表数据比较
  4. Delphi 正则表达式语法(9): 临界匹配 - 也叫预搜索与反向预搜索
  5. Ubuntu Server 13.04安装图形界面
  6. NSArray创建和使用
  7. 第01篇:C#星夜拾遗之如何开始C#学习
  8. C++实现黑客帝国流星雨效果
  9. php 置信区间 计算,科学网—置信区间和标准误差 - 邸月宝的博文
  10. vue中异步组件的使用与配置说明