快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

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

   这是高新技术等级考试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,确实得改一下,请各位赐教!异常感谢!


返回类别: Flash教程
上一教程: Flash与后台编码问题解决新方案
下一教程: As2 Class 的 Private 属性

您可以阅读与"Flash高级知识:用自定义类实现动画控制"相关的教程:
· Flash高级知识学习:ActionScript扫盲
· Flash实现动态遮罩:图片渐出效果
· Flash AS进阶教程:实现动态模糊效果
· FlashMX 视频教程(46)-控制动画的开始和停止
· Flash与Photoshop结合实现镜头推拉效果动画
    微笑服务 优质保证 索取样品