·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

深入理解flash函数(AS2)(4)

时间:2011-06-24 14:56blogbus.com
十一、重载函数 重载函数是指,使多个函数具有相同的名字但具有不同数量和/或类型的参数。在许多情况下这可能是有用的。例如,可能有一个名为caIculateArea()的函数,它基于两个参数(各个边的长度)来计算矩形的面积。

  十一、重载函数

  重载函数是指,使多个函数具有相同的名字但具有不同数量和/或类型的参数。在许多情况下这可能是有用的。例如,可能有一个名为caIculateArea()的函数,它基于两个参数(各个边的长度)来计算矩形的面积。但可能还希望有一个calculateArea()函数,它基于一个单独的参数(半径)来计算圆的面积。问题是,正如已经提到过的那样,ActionScript并不要求函数定义中的参数数量与传递给它的参数的数量一致。这就是说,不能有两个具有相同名字的函数,即便它们有不同数量的参数。因此,不能真的用ActionScript来重载函数。相反,可以在函数中使用if语句或switch语句来检查参数的数量而模仿函数的重载。下面是一个例子,它说明可以如何写一个函数,使其根据传递给它的参数的数量(由arguments.length决定)计算矩形的面积或者圆的面积。这并不是一个严格意义上的重载函数,而是ActionScript的等价物。

  1. function calculateArea():Number{   
  2. switch(arguments.length){   
  3. case 1:   
  4. var nRadius:Number=arguments[O];   
  5. return(Math.PI*(nRadius*nRadius));   
  6. case 2:   
  7. var nA:Number=arguments[O];   
  8. var nB:Number=arguments[1];   
  9. return(nA*nB);   
  10. default:   
  11. return null;   
  12. }   

  十二、为可重用而编写函数

  当写一个函数时,要记住易用的或可重用的代码的重要性。理想的情况是使函数尽可能地通用和尽可能地包装好。函数一般应该像一个黑箱一样进行操作。这就是说,函数的活动性从本质上讲应该是不依赖于程序的其他部分的。一个写得很好的函数应该可以被用到许多不同的程序中,就像一把万能钥匙可以开不同的锁一样。应该用可重用性的观念来写函数。当写通用函数时,要记住如下几点:


◆通常,不要使用在函数外面定义的变量——在函数中使用的变量(和对象)应该是在函数中声明的或作为参数传递给函数的。如果需要将一个值赋予一个将在函数的作用域之外使用的变量,则考虑使用一个return语句来代替。因为一个函数一次仅能返回一个值,所以可能会发现用一个return语句似乎有点局限。如果在函数中的确是这样的话,那么也许就会发生下面两件事之一:要么想返回的值是相关的值,那么可以将它们放入一个数组或一个对象中,然后返回它们;要么它们是不相关的值,那么就应该将函数拆散成多个函数。但也可能有例外。某些时候,只想用一个函数将一个影片中的某些功能组织到一起,以便将代码组织成子程序。在这种情况下,直接访问在该函数外面声明的变量和对象还是可以接受的。

◆给函数取一个能描述其任务的名字——当再次看到函数时,就可以很容易地知道该函数是干什么的了。如果因为函数要做许多事情而不好给它取名,请考虑将那个函数拆散成多个函数。即便是通用函数,它们也应该执行特定的任务。虽然这些指导方针通常是有用的,但有的时候它完全不适合写一个真正通用的函数。如果写一个函数的任务对正在写的程序来说非常特殊,那么将它写得太通用了也许并没什么用。

  十三、使用内置函数

  前面已经学过如何在ActionScript中创建一个自定义函数了。通常,当人们谈到函数时所指的就是这些自定义函数。但是,在ActionScript中还有许多其他“内置函数”,基本上可以像使用自定义函数那样来使用它们。Actions工具箱中包含一个名为Global Functions的文件夹,在这个文件夹中是包含所有内置函数的子文件夹。这些函数中的许多已经被类和方法代替了,因此最好使用这些新的替代品。例如,所有的时间轴控制、影片剪辑控制和打印函数都已经被方法代替了。但仍有某些全局的内置函数是有用的。这些函数包括:
◆fscommand()_一仅在非常特殊的情况下才使用这个函数。fscommand()函数能使Flash影片与播放器进行通信。
◆setInterval()/clearInterval()——这些函数能够指示Flash按特定的、固定的间隔去调用其他函数。请参见下面的“创建间隔函数”中的详细内容。
◆escape()/unescape()——这些函数被用于在文本和安全URL格式之间进行转换。


◆getTimer()——getTimer()函数返回自从Flash影片开始播放以来的毫秒数。这在某些定时处理(不要求很高的准确性和精确性)中可能有用。例如,想在影片“时间到了”之后做某些循环,在这些情况下,getTimer()就是一个合适的函数。例如,可能有一个等待来自服务器的响应的影片,但是,如果30秒钟之后还没有得到响应,可能就想停止等待并提醒用户服务器没有响应。
◆trace()——trace()函数在本书中到处可见。在测试Flash应用程序显示信息时,它非常有用。
◆isFinite()/isNaN()——这些函数测试一个值是否是有限的,甚至是否是一个有效的数字。
◆parseFloat()/parselnt()——这些函数从一个字符串中解析一个数字。

 

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器