最新更新 sitemap 网站制作设计本站搜索
网页设计
国外网站 韩国网站 个人主页 手提袋设计 CSS 网页特效 平面设计 网站设计 Flash CMS技巧 服装网站 php教程 photoshop 画册 服务器选用 数据库 Office
虚拟主机 域名注册 云主机 网页设计 客服QQ:8208442
当前位置:首页 > 网络设计学院 > Flash教程

FLASH串用自定义类实现动画控制

日期:11-08    来源:中国设计秀    作者:cnwebshow.com

这是高新技术等级考试Flash复习题中的一个问题,我在制作效果时没完全按照原题去做,主要是大家通过这个实例学会“用自定义类实现动画控制”的一些方法就行了。vCz中国设计秀
一、定义类vCz中国设计秀
在文本编辑器中输入以下的类定义代码,保存为:人.as  class 人 { vCz中国设计秀
 //属性定义 vCz中国设计秀
 var 速度:Number = 1; vCz中国设计秀
 private var Personso:Sound; vCz中国设计秀
 public function 人(){ vCz中国设计秀
  Personso = new Sound(); vCz中国设计秀
 } vCz中国设计秀
 //移动MC的方法 vCz中国设计秀
 public function 移动(mc:Object,轮:Object,方向:String):Void { vCz中国设计秀
  var root = this; vCz中国设计秀
  mc.onEnterFrame = function() { vCz中国设计秀
   if (方向 == "l") {  vCz中国设计秀
    if (mc._x<0) { vCz中国设计秀
     mc._x = Stage.width;   //如果已到舞台左边界,就跳到右边 vCz中国设计秀
    }else{ vCz中国设计秀
     mc._x -= root.速度; vCz中国设计秀
    }     vCz中国设计秀
    轮._rotation -= root.速度; vCz中国设计秀
   } else if (方向 == "r") { vCz中国设计秀
    if (mc._x>Stage.width) { vCz中国设计秀
     mc._x = 0; vCz中国设计秀
    }else{ vCz中国设计秀
     mc._x += root.速度; vCz中国设计秀
    }     vCz中国设计秀
    轮._rotation += root.速度; vCz中国设计秀
   } else if (方向 == "s") { vCz中国设计秀
    delete this.onEnterFrame;//删除onEnterFrame,释放内存 vCz中国设计秀
   } vCz中国设计秀
  }; vCz中国设计秀
 } vCz中国设计秀
 //显示信息的方法 vCz中国设计秀
 public function 信息():String { vCz中国设计秀
  return ("我们一起来学习Flash!"); vCz中国设计秀
 } vCz中国设计秀
 //挥手的方法 vCz中国设计秀
 public function 挥手(mc:MovieClip, hsx:Boolean):Void { vCz中国设计秀
  if (hsx) { vCz中国设计秀
   mc.gotoAndPlay(2);//挥手 vCz中国设计秀
  } else { vCz中国设计秀
   mc.gotoAndStop(1);//手放下 vCz中国设计秀
  } vCz中国设计秀
 } vCz中国设计秀
 //发声的方法 vCz中国设计秀
 public function 发声(sou, 口:MovieClip):Void { vCz中国设计秀
  Personso.attachSound(sou);//加载库中的声音 vCz中国设计秀
  Personso.start(); vCz中国设计秀
  口.play();//发声的同时控制MC“口”的动画 vCz中国设计秀
 } vCz中国设计秀
} vCz中国设计秀
几点说明: vCz中国设计秀
1、我用了较多的中文变量名,以利理解,所以注释写得少; vCz中国设计秀
2、关于方法(函数)——移动() vCz中国设计秀
   有三个参数 vCz中国设计秀
  移动(mc,轮,方向) vCz中国设计秀
 mc   要左右移动的影片剪辑MC vCz中国设计秀
轮    要让它旋转的影片剪辑 vCz中国设计秀
方向  用字符串来控制mc的移动方向:“l”向左,“r”向右,“s”停止 vCz中国设计秀
3、挥手的动作实质上是MC本身来完成的,函数里只是控制MC跳到相应的帧 vCz中国设计秀
4、调用发声方法有两个参数,传入库里链接的声音ID名;口形动作MC的路径和MC名。 vCz中国设计秀
二、制作场景上的mc和相关按钮 vCz中国设计秀
详情看源文件,以下是源文件第一帧的代码: vCz中国设计秀
var MyPerson = new 人(); vCz中国设计秀
_root.onEnterFrame = function() { vCz中国设计秀
 _root.movv = MyPerson.速度; vCz中国设计秀
} vCz中国设计秀
this.左移.onRelease = function() { vCz中国设计秀
 MyPerson.移动(_root.Person_mc,_root.Person_mc.车轮,"l");  vCz中国设计秀
}; vCz中国设计秀
this.右移.onRelease = function() { vCz中国设计秀
 MyPerson.移动(_root.Person_mc,_root.Person_mc.车轮,"r");  vCz中国设计秀
}; vCz中国设计秀
this.停止.onRelease = function() { vCz中国设计秀
 MyPerson.移动(_root.Person_mc,_root.Person_mc.车轮,"s");  vCz中国设计秀
}; vCz中国设计秀
this.加速.onRelease = function() { vCz中国设计秀
 if (MyPerson.速度<100){ vCz中国设计秀
  MyPerson.速度 += 1; vCz中国设计秀
 } vCz中国设计秀
}; vCz中国设计秀
this.减速.onRelease = function() { vCz中国设计秀
 if (MyPerson.速度>1){ vCz中国设计秀
  MyPerson.速度 -= 1; vCz中国设计秀
 } vCz中国设计秀
}; vCz中国设计秀
this.信息.onRollOver = function() { vCz中国设计秀
 _root.Person_mc.information = MyPerson.信息(); vCz中国设计秀
}; vCz中国设计秀
this.信息.onRollOut = function() { vCz中国设计秀
 _root.Person_mc.information = ""; vCz中国设计秀
}; vCz中国设计秀
this.挥手.onRollOver = function() { vCz中国设计秀
 MyPerson.挥手(_root.Person_mc.右手, true); vCz中国设计秀
}; vCz中国设计秀
this.挥手.onRollOut = function() { vCz中国设计秀
 MyPerson.挥手(_root.Person_mc.右手, false); vCz中国设计秀
}; vCz中国设计秀
this.发声.onRelease = function() { vCz中国设计秀
 MyPerson.发声("QQ",_root.Person_mc.head); vCz中国设计秀
};vCz中国设计秀

这是被人骂得狗血淋头的帖子,有人说:屁大一个动作,写了N长的AS。 vCz中国设计秀
没办法,我就这水平了! vCz中国设计秀
当然,单纯从实现效果来说,应该很简单,没必要写这么多的AS,可是,这是一个题: vCz中国设计秀
1、定义“类”,存为AS文件。在类里实现点击相应按钮时:vCz中国设计秀
1)人的左右移动 2)挥手动作 3)发声 4)动态文本信息显示等功能(动作) vCz中国设计秀
2、制作相应按钮,制作Person_mc实例MC,并把头、身、左手、右手、左脚、右脚和动态文本框放入Person_mc。 vCz中国设计秀
口型的动作和下面轮子的动作是我加的,原题里没有。 vCz中国设计秀
这个例子并不是为了一个效果,而是为了学习“类”的一个实验。 vCz中国设计秀
看了一下,屁大一个动作,写了N长的AS,确实得改一下,请各位赐教!非常感谢!vCz中国设计秀

vCz中国设计秀