actionscript3高阶之function说明

functionactionscript3的一个重要组成元素,更是程序复用的基础,因此灵活运用function能大幅度的提高程序开发效率和重用性。function通常来说都有创建、调用、返回值、销毁等步骤,actionscript3function也如此,除此之外actionscript3functionapply,call等自身反调的特性。

1) 函数声明、函数调用、函数的变量和参数、函数终止和函数的作用域

这些基本上是任何一种编程语言讲function都会强调的东西,这里不再赘述。这里主要强调函数参数问题。

·参数可以有默认值,但必须是最后一个参数;

·可以是不定参数,function test(...arg)

2) callee属性

arguments数组可以让我们获取函数的参数,arguments对象有一个属性callee,它返回时执行函数的引用。通常,我们知道所调用的函数的名字,但是如果我们正在执行一个用函数直接量来创建的匿名函数,callee函数就很有用了。下述代码就用callee实现了倒计时。

count = function(x){

trace(x);

if(x>1)

arguments.callee(x-1);

}

count(25);

3) 递归函数

认识并使用递归函数对于action的堆栈问题会有很好的认识,下述代码为一个常见的阶层求解。

function factorial(x){

if(x<0){

return undefined;

}else if(x<=1){

return 1;

}else{

return x* factorial(x-1);

}

}

4) 函数作为对象,这个要重点关注

ActionScript 3.0 中的函数是对象。当您创建函数时,就是在创建对象,该对象不仅可以作为参数传递给另一个函数,而且还可以有附加的属性和方法。

作为参数传递给另一个函数的函数是按引用(而不是按值)传递的。在将某个函数作为参数传递时,只能使用标识符,而不能使用在调用方法时所用的小括号运算符。例如,下面的代码将名为 clickListener() 的函数作为参数传递给 addEventListener() 方法:

addEventListener(MouseEvent.CLICK, clickListener);

Array.sort() 方法也定义了一个接受函数的参数;

重点关注 function.apply call 方法。

另外,可以通过在函数体外部定义函数属性来定义您自己的函数属性。函数属性可以用作准静态属性,用来保存与该函数有关的变量的状态。例如,您可能希望跟踪对特定函数的调用次数。如果您正在编写游戏,并且希望跟踪用户使用特定命令的次数,则这样的功能会非常有用,尽管您也可以使用静态类属性来实现此目的。下面的示例(该示例仅在标准模式下进行编译,因为严格模式不允许向函数添加动态属性)在函数声明外部创建一个函数属性,并在每次调用该函数时递增此属性:

// Compiles only in standard mode

var someFunction:Function = function ():void

{

someFunction.counter++;

}

someFunction.counter = 0;

someFunction();

someFunction();

trace(someFunction.counter); // 2

5)

你可能感兴趣的:(游戏,编程,actionscript)