·您的位置: 首页 » 资源教程 » 创意设计 » Flash » Flash高级知识:用自定义类实现动画控制

Flash高级知识:用自定义类实现动画控制

类别: Flash教程  评论数:0 总得分:0
   这是高新技术等级考试Flash复习题中的一个问题,我在制作效果时没完全按照原题去做,主要是大家通过这个实例学会“用自定义类实现动画控制”的一些方法就行了。
一、定义类
在文本编辑器中输入以下的类定义代码,保存为:人.as 
class 人 {
 //属性定义
 var 速度:Number = 1;
 private var Personso:Sound;
 public function 人(){
  Personso = new Sound();
 }
 //移动MC的方法
 public function 移动(mc:Object,轮:Object,方向:String):Void {
  var root = this;
  mc.onEnterFrame = function() {
   if (方向 == "l") { 
    if (mc._x<0) {
     mc._x = Stage.width;   //如果已到舞台左边界,就跳到右边
    }else{
     mc._x -= root.速度;
    }    
    轮._rotation -= root.速度;
   } else if (方向 == "r") {
    if (mc._x>Stage.width) {
     mc._x = 0;
    }else{
     mc._x += root.速度;
    }    
    轮._rotation += root.速度;
   } else if (方向 == "s") {
    delete this.onEnterFrame;//删除onEnterFrame,释放内存
   }
  };
 }
 //显示信息的方法
 public function 信息():String {
  return ("我们一起来学习Flash!");
 }
 //挥手的方法
 public function 挥手(mc:MovieClip, hsx:Boolean):Void {
  if (hsx) {
   mc.gotoAndPlay(2);//挥手
  } else {
   mc.gotoAndStop(1);//手放下
  }
 }
 //发声的方法
 public function 发声(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和相关按钮
详情看源文件,以下是源文件第一帧的代码:
var MyPerson = 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,确实得改一下,请各位赐教!非常感谢!

-= 资 源 教 程 =-
文 章 搜 索
关键词:
类型:
范围:
纯粹空间 softpure.com
Copyright © 2006-2008 暖阳制作 版权所有
QQ: 15242663 (拒绝闲聊)  Email: faisun@sina.com
 纯粹空间 - 韩国酷站|酷站欣赏|教程大全|资源下载|免费博客|美女壁纸|设计素材|技术论坛   Valid XHTML 1.0 Transitional
百度搜索 谷歌搜索 Alexa搜索 | 粤ICP备19116064号-1