站内搜索:     
站点首页破釜学院网页制作FlashAction应用 → AS基础精典教程 第七章 可以重复的函数(function)
正在加载相关信息.....
Web 站内搜索
AS基础精典教程 第七章 可以重复的函数(function)
】【打印】【加入收藏】【关闭收藏到新浪ViVi】【收藏到365KEY】 浏览字号:
日期:2004-09-22 人气: 出处:闪吧 作者: 小角色闪客

不是用几个例子来示范吗?怎么还不讲例子啊?是的,下一个例子要用到函数,所以再补充点函数知识。(上当了吧?chocobo也上当了,开始翻译的时候没想到这篇东西这么长的,这才讲完第一个例子呢   55~)
一个函数是下面这个样子的:
function   funcName   ()   {
statements
}
在ACTION面板里面,function这个单词是变色的,FLASH认识这个单词,它代表后面的就是描述函数的内容
funcName是函数的名字,当你以后要用这函数的时候,就要敲这个名字了(是的,建函数就是为了以后反复调用它)
()小括号里面是参数,什么是参数一会再讲
{}大括号里面的就是函数所要完成功能的一句句代码。
当我们建立函数之后,函数并不运行,只在你用函数的名字调用它出来,才正式开始运行   
例如我们有这样一个函数
function   sayHi   ()   {
trace("Hi!");
}   
当我们在FLASH某帧需要sayHi的时候,输入AS:
sayHi();
是不是和最常见的stop();还有play();一样啊?因为它们都是函数嘛   
sayHi函数真是智,来个有意义的函数吧。先在场景里放好一个名字叫ball的instance(千万记得要给instance输入名字,否则函数运行没结果别找我)
在第一帧输入这样一个函数:
function   moveBall   ()   {
ball._x   +=   10;   //   怕有人不懂,解释一下,_x代表ball的横坐标,ball._x   +=10   的意思是ball._x   =   ball._x   +   10   ,这样省略的写法还有   -=   *=   /=   等等
ball._y   +=   10;
}   
再做一个按钮,按钮的AS:
on   (release)   {
moveBall();
}   
好的,运行,从AS你可以看到,每点一下按钮,执行一次函数,而函数让小球下斜下移动。(FLASH的坐标轴,原点在左上角)   
为什么要建立函数呢,就是想更有效率,现在有这个函数已经不用每移动一下写一次AS了,但还是不够,我们需要更有扩展性(flexibility)的函数
这个函数只能移动叫ball的MC,只能向固定的方向移动固定的距离,我们需要可以移动任何MC,向任何方向移动任何距离的函数,这样可以省却很多输入AS的工夫(这就叫一劳永逸,呵呵)
我们的新函数有三个地方是每次调用都不一样的
1、移动的那个MC的名字
2、水平移动的距离
3、垂直移动的距离(呵呵,用极坐标,也可以把2、3说成移动的距离,和移动的角度,不过大家都不习惯极坐标)
为了告诉函数这些变化的地方,我们需要参数(parameters),参数在定义函数的时候就要输入,我们的函数改写好了:
function   moveClip   (theClip,   xDist,   yDist)   {
theClip._x   +=   xDist;
theClip._y   +=   yDist;
}   
当我们要实现原来函数功能的时候,现在调用新函数就变成
moveClip   (ball,   10,   10);   
定义函数的时候function   moveClip   (theClip,   xDist,   yDist)   {
这里的theClip等参数(parameters)只是定义,本质上说是不存在的,因为没有内容嘛
当我们用moveClip   (ball,   10,   10);调用的时候,ball就输入到theClip中去了,这里的ball称为arguments(偶读得书少,不会翻译)
arguments可以是一个变量,也可以是一个表达式(例如"a"+"b",先得出结果再传输给函数)只要用逗号隔开各个参数就行   
函数如何结束呢
正常来说,函数运行完   {}里所有语句结束,我们也可以用一句AS:return;   让它中途结束,例如:
function   say(msg)   {
return;   
trace(msg);
}
这个函数被调用的时候将什么都不做就结束   
return还有更重要的用途:
function   sqr(x)   {   //   Squares   a   number   平方
return   x   *   x;
}
a=sqr(2);   //a将会被赋予2的平方   4
return更重要的用途就是返回数据   
在AS里面,有个内建的函数Math.sqrt(就是说你敲入的时候会变色),其功能和我们刚才做的sqr函数是一样的,现在你该知道内建函数也没什么神秘的,我们一样可以做出相同功能的来。




>>>> 进入论坛交流 <<<<