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)   

你可能感兴趣的:(编程,function,action,语言,actionscript,程序开发)