用自定义类实现动画控制

2008-04-02 10:55:36来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折


  这是高新技术等级考试Flash复习题中的一个问题,我在制作效果时没完全按照原题去做,主要是大家通过这个实例学会“用自定义类实现动画控制”的一些方法就行了。

  一、定义类

  在文本编辑器中输入以下的类定义代码,保存为:人.as

  
class人{

  //属性定义

  var速度:Number=1;

  privatevarPersonso:Sound;

  publicfunction人(){

  Personso=newSound();

  }

  //移动MC的方法

  publicfunction移动(mc:Object,轮:Object,方向:String):Void{

  varroot=this;

  mc.onEnterFrame=function(){

  if(方向=="l"){

  if(mc._x<0){

  mc._x=Stage.width;//假如已到舞台左边界,就跳到右边

  }else{

  mc._x-=root.速度;

  }

  轮._rotation-=root.速度;

  }elseif(方向=="r"){

  if(mc._x>Stage.width){

  mc._x=0;

  }else{

  mc._x =root.速度;

  }

  轮._rotation =root.速度;

  }elseif(方向=="s"){

  deletethis.onEnterFrame;//删除onEnterFrame,释放内存

  }

  };

  }

  //显示信息的方法

  publicfunction信息():String{

  return("我们一起来学习Flash!");

  }

  //挥手的方法

  publicfunction挥手(mc:MovieClip,hsx:Boolean):Void{

  if(hsx){

  mc.gotoAndPlay(2);//挥手

  }else{

  mc.gotoAndStop(1);//手放下

  }

  }

  //发声的方法

  publicfunction发声(sou,口:MovieClip):Void{

  Personso.attachSound(sou);//加载库中的声音

  Personso.start();

  口.play();//发声的同时控制MC“口”的动画

  }

  }

  几点说明:

  1、我用了较多的中文变量名,以利理解,所以注释写得少;

  2、关于方法(函数)――移动()

  有三个参数

  移动(mc,轮,方向)

  mc要左右移动的影片剪辑MC

  轮要让他旋转的影片剪辑

  方向用字符串来控制mc的移动方向:“l”向左,“r”向右,“s”停止

  3、挥手的动作实质上是MC本身来完成的,函数里只是控制MC跳到相应的帧

  4、调用发声方法有两个参数,传入库里链接的声音ID名;口形动作MC的路径和MC名。

  二、制作场景上的mc和相关按钮

  详情看源文档,以下是源文档第一帧的代码:

  varMyPerson=new人();

  _root.onEnterFrame=function(){

  _root.movv=MyPerson.速度;

  }

  this.左移.onRelease=function(){

  MyPerson.移动(_root.Person_mc,_root.Person_mc.车轮,"l");

  };

  this.右移.onRelease=function(){

  MyPerson.移动(_root.Person_mc,_root.Person_mc.车轮,"r");

  };

  this.停止.onRelease=function(){

  MyPerson.移动(_root.Person_mc,_root.Person_mc.车轮,"s");

  };

  this.加速.onRelease=function(){

  if(MyPerson.速度<100){

  MyPerson.速度 =1;

  }

  };

  this.减速.onRelease=function(){

  if(MyPerson.速度>1){

  MyPerson.速度-=1;

  }

  };

  this.信息.onRollOver=function(){

  _root.Person_mc.information=MyPerson.信息();

  };

  this.信息.onRollOut=function(){

  _root.Person_mc.information="";

  };

  this.挥手.onRollOver=function(){

  MyPerson.挥手(_root.Person_mc.右手,true);

  };

  this.挥手.onRollOut=function(){

  MyPerson.挥手(_root.Person_mc.右手,false);

  };

  this.发声.onRelease=function(){

  MyPerson.发声("QQ",_root.Person_mc.head);

  };


  这是被人骂得狗血淋头的帖子,有人说:屁大一个动作,写了N长的AS。

  没办法,我就这水平了!

  当然,单纯从实现效果来说,应该很简单,没必要写这么多的AS,可是,这是个题:

  1、定义“类”,存为AS文档。在类里实现点击相应按钮时:

  1)人的左右移动 2)挥手动作 3)发声 4)动态文本信息显示等功能(动作)

  2、制作相应按钮,制作Person_mc实例MC,并把头、身、左手、右手、左脚、右脚和动态文本框放入Person_mc。

  口型的动作和下面轮子的动作是我加的,原题里没有。

  这个例子并不是为了一个效果,而是为了学习“类”的一个实验。

  看了一下,屁大一个动作,写了N长的AS,确实得改一下,请各位赐教!很感谢!

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: 提高播放质量Flash标准loading制作方法

下一篇: MD532位码的FLASH算法