Flash AS3教程:下雪动画效果

互联网   发布时间:2008-10-06 01:25:44   作者:佚名   我要评论
  如果你对本篇文章很感兴趣或是在学习Flash时遇到了什么困难,欢迎到我们的学院论坛来交流。   与AS2.0相比较,AS3.0有了很大的变化,它改变了我们以往的编程习惯。今天我们通过一个非常简单的入门练习-下雪效果,来认识一下AS3.0,主要了解一下AS3.0与AS2.0的区别。
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

  如果你对本篇文章很感兴趣或是在学习Flash时遇到了什么困难,欢迎到我们的学院论坛来交流。


  与AS2.0相比较,AS3.0有了很大的变化,它改变了我们以往的编程习惯。今天我们通过一个非常简单的入门练习-下雪效果,来认识一下AS3.0,主要了解一下AS3.0与AS2.0的区别。

  首先,我们来介绍一下AS3的一些基础知识。

  在AS3中怎样把库中的元件加载舞台

  我们知道在AS2中我们可以通过attachMovie将库中的mc加载到舞台上。在使用这个命令前我们必须要做的事情是在库中右击元件,打开连接面板,然后在标识符框中为元件取上一个连接名,这样才能用attachMovie()来加载它。现在我们在AS3中来做一下,在库中右击元件,打开连接面板,这时你会叫道:“为什么我的标识符框是灰色的,不能用。”不是你的是灰色的,而是在AS3中都是灰色的,因为在AS3中是不能用 attachMovie()来加载元件的。AS3据说是完全面向对象编程的语言了,这就必须要了解类,对象等概念。类就是一类东西的一个名称,比如动物类就包括了所有动物,动物类下面的所有人就是人类了。又如所有电器可叫电器类,电器类下面又可有电视机类等。对象是某类的一个具体的实例。比如你就是人类中的一个具体的人,你就是人类的一个对象。看到这里你说:“我晕”,我说:“我更晕”。介绍类,对象这些概念看的人不容易看懂,说的人更不容易说清。在 AS3中要加载一个显式对象(我们在舞台上看得见的东西),必须要载入一个类,然后要声明这个类的一个实例,再用new关键字创建它,最后用 addChild()将它加载到舞台。我们将舞台着是一个展台,将库看着是一个仓库,现在仓库中有一台电视机要放到展台上,该怎样做呢?首先需要一个电视机类,然后需要声明一个实例:

  var 电视机甲(实例名):电视机(类名)= new 电视机();

  addChild(电视机甲);

  现在我们回到flash中来看看,现在库中有一个元件,我们要将它加载到舞台上,应该这样做:

  在库中右击该元件,打开连接面板,我们会看到一个叫类的文本框,在这里给这个类取一个名字,比如myl.确定。这样我们就加载了一个叫myl的类了。接下来,在场景的帧动作中,输入:

  var mymc:myl = new myl();

  addChild(mymc);

  mymc.x = 100;

  mymc.y = 100;

  测试影片,我们会看到,库中的这个元件已被加载到舞台的(100,100)坐标处了。

  AS3的事件侦听机制

  什么是事件呢?当某件事情发生的时候就做些什么事。这个某件事情就是事件。比如:press,当鼠标按下的时候,这就是一个事件。在AS2中,我们有两种方式来实现事件驱动。一种是将代码直接写在元件上(mc或按钮)。比如,在场景中有一个叫mymc的影片剪辑元件,我们在其上点右键,打开动作面板,输入:

  on(press){

  干点坏事;

  }

  这样,当我们在mymc元件上按下鼠标时,就会去干点坏事。第二种方法是在帧动作上输入代码:

  mymc.onPress = function(){

  干点坏事;

  }

  这样,当我们在mymc元件上按下鼠标时,同样会去干点坏事。

  接下来,我们在AS3中来看看:在元件上点右键,打开动作面板,你会看到“无法将动作应用于当前所选内容”。哦嗬,搞不成。在AS3中无法将代码写在元件上,只能写在帧动作上。而AS3的事件侦听,也有它自已,的格式,不管你乐意不乐意,你都必须这样做。AS3在事件侦听格式是:

  function 函数名称(事件对象:事件类型):void

  {

  // 此处是为响应事件而执行的动作。

  }

  触发事件的对象.addEventListener(事件类型.事件名称, 函数名称);

  必须先声明一个函数,将要执行的代码放在其中,然后触发事件的对象用addEventListener去侦听事件,如果事件发生则调用函数。还用上面那个干坏事的例子。打开帧动作面板,输入:

  function 干坏事(event:MouseEvent):void {

  干点坏事;

  }

  mymc.addEventListener(MouseEvent.CLICK,干坏事);

  这样,当我们在mymc元件上按下鼠标时,会再一次去干点坏事。上面代码中的MouseEvent是鼠标事件的意思,CLICK是单击的意思,即在元件上单击就会触发事件。

  在AS3中改变对象的位置和缩放对象

  我们知道,对象在舞台上位置由其x,y轴的坐标来决定。在AS2中有两个属性:_x,和_y,用来指定对象的x,y坐标,这一点在AS3中也是一样的,只是AS3中去掉了下划线,属性名就叫x,y.比如,在AS2中,要将mymc的位置定在(100,100)处,要这样:

  mymc._x = 100;

  mymc._y = 100;

  而在AS3中是这样的:

  mymc.x = 100;

  mymc.y = 100;

  在AS2中对象的大小可以用width,height,_xscale,_yscale四个属性来确定,在AS3中width和height是一样的,不再说它了。AS3用scaleX和scaleY属性取代了_xscale,_yscale属性。同时它们的值也是有区别的。AS2中的,_xscale, _yscale属性值是百分比。而AS3中的scaleX和scaleY值是一分比。一分比?这是我发明的,博士专用名词,嘿嘿。scaleX和 scaleY值实际就是放大缩小的倍数。比如,在AS2中 mymc._xscale = 30; 这是将mymc的宽度缩小到原来的30%。

  在AS3中 mymc.scalex = 30; 这是将mymc的宽度放大到原来的30倍。要将宽度缩小到30%,就要用

  mymc.scale = 0.3;

  好了,基础知识就介绍这么多,本文就当是AS3的入门教程吧,介绍的就几个入门知识。

  下面我们就来做一个下雪效果的练习,将上面的知识点运用到实例中。

  实例练习-下雪效果

  效果演示:

  

  打开flash cs3,选择新建flash文件(ActionScript 3.0).

  导入一张背景图片,在场景中放好。

  新建一个影片剪辑元件,将舞台放大到800%,用椭园工具,画一个无笔触,填充色为放射将白色左色标透明度为100%,右色标透明度0%的椭园,大小这 4x3,用选择工具调整一下,使其不太规则。在第30帧插入关键帧。插入引导层,画一条由上向下的弯曲引导线。回到第一层,在第一帧和30帧,分别将椭园放到引导线的两端,建立补间动画。

  如图:

  
下雪效果

  放大至800%时

  
下雪效果
  打开库,在元件上右击,打开连接面板,在类文本框中输入:xl,确定。

  
下雪效果   回到主场景,新插入一图层,命名为action,打开动作面板:输入:

  var i:Number = 1;

  addEventListener(Event.ENTER_FRAME,xx);

  function xx(event:Event):void {

  var x_mc:xl = new xl();

  addChild(x_mc);

  x_mc.x = Math.random()*550;

  x_mc.scaleX = 0.2 Math.random();

  x_mc.scaleY = 0.2 Math.random();

  i ;

  if(i>100){

  this.removeChildAt(1);

  i=100;

  }

  }

  ok,完成。

  上面的代码,在基础介绍中都已说明了,应该一看就明白了。有几句解释一下。

  x_mc.scaleX = 0.2 Math.random();

  x_mc.scaleY = 0.2 Math.random();

  0.2 Math.random();会产生0.2-1.2间的随机数,这就让雪花缩小到20%到放大到120%间,落下来的雪花,大小不一,显得更加真实一些。

  removeChildAt(n);是删除已加载的显式对象,其中的n是已加载的对象的索引号。从addEventListener (Event.ENTER_FRAME,xx);这一句可以看出,运行一帧,就会从库中加载一个雪花,同时i加,这样当i等于100时,场景中就已有 100个雪花了。这个时候我们用this.removeChildAt(1);将最先加载的雪花删除。然后将i设为100,到下一帧,i就又大于100 了,那么要加载1个雪花,同时又删除了一个雪花,这就达到了一个动态平衡,场景中始终只有100个雪花。要不然,就会雪越下越多,造成雪灾就不好了。

相关文章

  • flash cs6鼠标跟随效果实现代码分享

    flash cs6想要实现鼠标跟随效果?该怎么制作呢?今天我们就来看看使用as2.0实现鼠标跟随效果的教程,需要的朋友可以参考下
    2019-05-19
  • Flash cs6怎么使用代码输入中英文文本?

    Flash cs6怎么使用代码输入中英文文本?Flash cs6中可以使用文字工具直接输入文本,也可以使用代码来输入文本,该怎么使用代码输入文本呢?请看下文详细的教程,需要的朋友
    2018-03-11
  • flash as3.0怎么定义抽象类和抽象?

    flash as3.0抽象类怎么定义? as3.0中有很多抽象类,该怎么定义抽象类和抽象方法呢?下面我们就来看看简单的例子,需要的朋友可以参考下http://www.jb51.net/softs/408402.
    2018-02-28
  • flash cs6中怎么使用ActionScript3.0?

    flash cs6中怎么使用ActionScript3.0?flash cs6中想要使用ActionScript3.0功能,该怎么使用呢?下面我们就来看看详细的教程,需要的朋友可以参考下
    2018-01-25
  • Flash中怎么实现鼠标点击决定图像位置?

    本教程给大家分享一个Flash小教程,教大家在Flash CS6中怎么实现鼠标点击决定图像位置?方法很简单,感兴趣的朋友欢迎前来一起分享学习
    2018-01-12
  • Flash中如何用代码将图片放在自己想要的舞台位置?

    本教程教程序员之家的ActionScript教程学习者在Flash中如何用代码将图片放在自己想要的舞台位置,教程讲解的详细,感兴趣的朋友欢迎前来分享学习
    2017-11-20
  • 在Flash CS6中使用with函数绘制背景图教程

    本教程教程序员之家的ActionScript教程学习者如何在Flash CS6中使用with函数绘制背景图?教程一步步讲解的挺详细,方法也不难,非常适合Flash新手入门学习
    2017-11-18
  • Flash怎么设置元件坐标?flash使用代码设置元件的坐标的教程

    Flash怎么设置元件坐标?flash中导如的元件需要添加坐标,该怎么定位元件坐标呢?下面我们就来看看flash使用代码设置元件的坐标的教程,需要的朋友可以参考下
    2017-10-11
  • Flash怎么制作来回摇摆的花朵的动画?

    Flash怎么制作来回摇摆的花朵的动画?Flash中想要给花朵制作一段摇摆的动画效果,该怎么制作呢?下面我们就来看看详细的教程,很简单,需要的朋友可以参考下
    2017-05-23
  • Flash怎么制作流动七彩色的文字?

    Flash怎么制作流动七彩色的文字?想要让文字动起来,该怎么使用flash给文字制作一个流动七彩色的动画呢?下面我们就来看看详细的教程,需要的朋友可以参考下
    2017-04-23

最新评论

?


http://www.vxiaotou.com