当前位置: 首页 > 图文教程 > Flash动画 > ActionScript > Flash自定义函数实例

ActionScript
FLASH 3D相册之利用BitmapData类制作
Flash 脚本游戏开发教程 第一课
Flash 脚本游戏开发教程第二课
Flash 脚本游戏开发教程第三课
Flash 脚本游戏开发教程第四课
Flash 脚本游戏开发教程第五课
Flash 脚本游戏开发教程第六课
Flash 脚本游戏开发教程第七课
Flash 脚本游戏开发教程第八课
Flash AS实现的蝌蚪摆尾动画的教程
从基础开始深入学Flash AS3教程(4)(译文)
从基础开始深入学Flash AS3教程(5)(译文)
从基础开始深入Flash AS3教程(2)(译文)
从基础开始深入学Flash AS3教程(3)(译文)
Flash AS3对单个图片进行角色动作化处理
从基础开始深入Flash AS3教程(1)(译文)
Flash教程:if条件语句的用法
Flash AS教程:_visible属性的详细讲解
Flash AS教程:图片环绕旋转效
Flash教程:trace()的使用

ActionScript 中的 Flash自定义函数实例


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-30   浏览: 72 ::
收藏到网摘: n/a

  如果有一个功能或者一段代码要经常使用,则可以把它写成自定义函数,在用到的时候调用它。使用函数是为了简化编程的负担,减少代码量和提高效率。

  一、 Flash中自定义函数的一般形式为:

  function 函数名称(参数1,参数2,……,参数n){

  //函数体。即函数的程序代码

  }

  自定义函数必须调用才有效。调用自定义函数的一般形式为:

  路径.函数名称(参数1,参数2,……,参数n)

  函数就像变量一样,必须正确使用目标路径才能调用它们。

  二、例题

  例1 假设我们要定义一个计算矩形面积的函数,可以这样:(打开21.1.fla)

 shu1 = shu2=dan="";//设置输入文本与动态文本
 function jxmj(a, b) {//自定义计算矩形面积的函数
 return a*b; //在这里返回结果,也就是得到函数的返回值
 }

  然后在按扭中调用这个函数:

 on (release) {
  dan = jxmj(shu1, shu2);//分别用两输入文本的值作为参数a,b;并且把函数返回的值用动态文本显示出来。
 }

  利用这个计算矩形面积的函数就可以计算任何矩形面积。

  例2 打开21.2.fla源文件

  这是我们前面一个作业中是一部分。当在“控制”按钮、“小松鼠”影片剪辑或者“小球”影片剪辑上按下鼠标时,小松鼠和小球分别按照相反的方向运动;这三个事件要达到的目的都一样,所以,脚本必定重复,我们可以使用自定义函数。

  在场景第一帧的脚本:

 function yd () { //自定义函数名称为yd;
 gotoAndPlay(1); //场景到第1帧播放;
 qiu_mc.gotoAndPlay(31);//qiu_mc到第31帧播放;
 }

  在松鼠上的脚本:

on (press) {
 _root.yd()//自定义函数在这个影片的父级(场景)上,因此,应该指出路径
  (_root)
 }

  在球上的脚本:

 on (press) {
 _root.yd()//同上;
 }

  在按扭上的脚本:

 on (press) {
 yd()//按扭和自定义函数都在场景上,路径可以省略不写。
 }

  例3 打开21.3.fla源文件

  源文件中有三个mc在做补间动作,下面的三个按扭分别控制场境中的三个mc。观察这三个按扭上的脚本,左边一个按扭上的脚本为:

 on (release) {
 a_mc._visible = 1;
 duplicateMovieClip(a_mc, "a_mc"+1, 1);
 b_mc._visible = 0;
 c_mc._visible = 0;
 }

  中间一个按扭上的脚本为:

 on (release) {
 b_mc._visible = 1;
 duplicateMovieClip(b_mc, "b_mc"+1, 1);
 a_mc._visible = 0;
 c_mc._visible = 0;
 }

  右边一个按扭上的脚本为:

 c_mc._visible = 1;
 duplicateMovieClip(c_mc, "c_mc"+1, 1);
 a_mc._visible = 0;
 b_mc._visible = 0;
 }

  注意观察这三个按扭上脚本中有那些是相同的的部分,那些是不同的的部分。相同的部分,在函数中直接写下来,而不同的部分(变化着的部分)用用一个变量来表示,这个变量就是参数。

  例如,这三个按扭上脚本中第一句中相同的部分是都有_visible = 1,而不同的则是要显示的mc(分别是a_mc,b_mc,c_mc),我们用变量mx来表示,那么,三个按扭上脚本中第一句可以统一表示为:

  mx._visible = 1。这里的mx就是第一个参数。

  这三个按扭上脚本中第二句中相同的部分是都要复制一个mc,复制后的mc的名称都是复制对象名称+1,复制后的mc的深度都是1;不同的部分就是复制的对象不同,而这个复制的对象正好的第一句中的mc,因此,第二句中不同的部分也就可以用第一个参数mx来表示,因此,三个按扭上脚本中第二句可以统一表示为:

duplicateMovieClip(mx, "mx"+1, 1).

  同样办法可以得到脚本的第3,第4句,因此,我们可以在场景的第1帧上设置自定义函数:

 function test (mx,my,mz) {//test是自定义函数的名称,你可以用
  mx._visible = 1; //你喜欢字母或者字母组合或者单词来表示
  duplicateMovieClip(mx, "mx"+1, 1);
  my._visible = 0;
  mz._visible = 0;
 }

  左边这个按扭是要使a_mc显示并且复制,因此第一个参数在这里表示的应该是a_mc,第二,三个参数在这里表示的应该是b_mc,c_mc;因此,在这里调用的函数应该写成:

  on (release) {
  test(a_mc,b_mc,c_mc)
  }

  仿照上面的思路,请大家在后两个按扭上分别写出脚本,使一个mc显示并且复制,另两个mc不可见。

  三、作业:

  把源文件中6个按扭上的脚本都改为调用自定义函数的形式。

  提示:

  1 连+20或者连-20可以表示为1*20或者-1*20;

  2 注意使用if...else if