Flash 动作脚本之:资料速查(10)_Flash教程
推荐:Flash 动作脚本之:资料速查(9)在脚本中控制流向在脚本中控制流向ActionScript使用if、for、while、do...while和for...in动作,依据某个条件是否存在执行某个动作。一、使用“if”语句检
使用自定义对象Flash 5答应用户自定义函数来执行一系列语句,对传递过来的值进行操作,并可返回值。函数定义好以后,就可以从任何时间轴(包括载入动画的时间轴)调用它。
可以把函数想像为一个“黑箱”。调用函数时给它提供输入(参数),它执行某些操作后产生输出(返回值)。 在自定义函数中,最好对它的输入、输出和用途作具体的注释,使用户易于理解和使用。
一、定义函数
象变量一样,函数是附属于定义它的电影剪辑的。当一个函数被重新定义时,新的定义取代旧的定义。要定义一个函数,使用function动作,后跟一个函数名、要传递给函数的参数和指出该函数做什么的ActionScript语句。
下面是一个称为Circle的函数,有一个参数radius :
function Circle(radius) { this.radius = radius; this.area = Math.PI * radius * radius; }注:用于函数体内的要害字
this
是对函数所属电影剪辑的引用。 也可以通过创建函数常量来定义函数。函数常量是指在表达式中而不是在语句中声明的不命名的函数。可以用函数常量定义函数,返回它的值,把它赋给表达式中的变量,如下所示:
area = (function () {return Math.PI * radius *radius;})(5);二、给函数传递参数
参数是函数代码处理的元素。例如,下面的函数有两个参数
initials
和finalScore :
function fillOutScorecard(initials, finalScore) { scorecard.display = initials; scorecard.score = finalScore; }当这个函数被调用时,必须把它要求的参数传递给它。该函数用传递过来的值取代函数定义中的参数。在本例中,
scorecard
是一个电影剪辑的实例名;display
和score
是实例中的输入文本域。下面的函数调用把值"JEB"赋
给变量display
,把值45000赋给变量score
: fillOutScorecard("JEB", 45000);
函数fillOutScorecard
中的参数initials
类似于局部变量。该函数被调用时它存在,退出函数时它消失。假如调用函数时省略了参数,省略了的参数以undefined
传递。假如在调用函数时提供了函数定义中并不要求的多余参数,这些多余? 数被忽略。
三、在函数中使用局部变量
局部变量是组织代码并使代码易于理解的重要工具。当一个函数使用局部变量时,它可以隐藏它的变量,使本动画的其它脚本不能访问。 局部变量的作用范围局限在本函数体内,并在退出函数时消失。传递给函数的任何参数均作为局部变量处理。
注:假如在函数中修改全局变量,请使用脚本注释说明这些修改。
四、从函数中返回值
你可以用return动作从函数中返回值。return动作终止函数,并用return动作的值取代它。假如Flash在函数结束前没有碰到return动作,将返回空字符串。例如,下面的函数返回参数x的平方:
function sqr(x) { return x * x; }
有些函数完成一系列任务,但不返回值。例如,下面的函数初始化一系列的全局变量:
function initialize() { boat_x = _root.boat._x; boat_y = _root.boat._y; car_x = _root.car._x; car_y = _root.car._y; }
五、调用函数
在正常模式的动作面板中调用函数,使用evaluate
动作,用圆括号传递要求的参数。 你可以从任何时间轴(包括载入的动画)调用任何时间轴中的函数。例如,下面的语句调用主时间轴中的电影剪辑MathLib
的函数sqr
,传递一个参数3,并把结果存储在变量temp
中:
var temp = _root.MathLib.sqr(3);
在Flash 4中,要模拟调用函数,你可以在动画结束后的某一帧中编写脚本, 然后通过把该帧的标签名传递给call
动作来调用它:
call("initialize");
这种脚本并非一个真正的函数,因为它不能接收参数,也不能返回值。尽管call
动作在Flash 5中仍然有效,但建议不再使用。
分享:Flash 动作脚本之:资料速查(8)使用操作符处理表达式中的值(2)七、位操作符位操作符在内部处理浮点数,把它们变为更易于处理的32位整数。精确的位操作的完成取决于操作符,但所有的位操作
- 相关链接:
- 教程说明:
Flash教程-Flash 动作脚本之:资料速查(10)。