Flash入门教程深入理解函数郑州清新教育提供.doc

上传人:marr****208 文档编号:132140869 上传时间:2020-05-13 格式:DOC 页数:14 大小:58.50KB
返回 下载 相关 举报
Flash入门教程深入理解函数郑州清新教育提供.doc_第1页
第1页 / 共14页
Flash入门教程深入理解函数郑州清新教育提供.doc_第2页
第2页 / 共14页
Flash入门教程深入理解函数郑州清新教育提供.doc_第3页
第3页 / 共14页
Flash入门教程深入理解函数郑州清新教育提供.doc_第4页
第4页 / 共14页
Flash入门教程深入理解函数郑州清新教育提供.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《Flash入门教程深入理解函数郑州清新教育提供.doc》由会员分享,可在线阅读,更多相关《Flash入门教程深入理解函数郑州清新教育提供.doc(14页珍藏版)》请在金锄头文库上搜索。

1、理解函数的目的给函数传递参数理解函数的变量作用域的重要性编写自定义函数从函数返回值用setInterval()创建递归函数通过使用函数,就可以创建可重用的代码、可读的代码、灵巧的代码。有了函数,就可以写出有效的、结构精巧的、维护得很好的代码,而不是冗长的、笨拙的代码。一、理解用函数进行编程函数是一种革新。写代码没有函数,就像出版图书没有印刷机,出版业是如此没有生产力,如此没产量。有了印刷机,只制一次版,就可以从那个版复制出许多副本了。印刷机是一种革新。同样地,如果编程序没有函数,就不得不一次一次地写出代码的每一行。但是,当写出一个函数时,就可以将多条语句封装在一起,就可以重复地调用那个函数(即

2、那些语句的组),而不用重复写相同的代码了。那就巧妙多了。函数是一种组织起一个代码块的方法,该代码块直到从其主流程中调用(直接地或间接地)时才执行。换句话说,函数是一种将调用时才执行(不调用不执行)某个特殊任务的代码块包装在一起的方法。函数比非结构化编程更具优势。这些优势包括: 通过消除混乱和冗余的代码,使代码更具有可读性。 通过重复使用函数而不是每次重复输入整个代码块,使程序更加有效率。 函数成为了进行修改的中心点。在函数中做个修改,该修改就能被应用到每个调用该函数的实例中。 编写成熟的函数可以在许多程序中重复使用。因此,可以开发出一个可被用于建立各种程序的函数库,而不需要每次从打草稿开始写脚

3、本。 包装在一个函数中的代码提供了进行用户交互的基础。如果没有函数,应用程序就像一个单独的程序那样运行。有了函数,一个用户发起的动作就可以调用一个函数。 二、定义自定义函数 我们已经知道在ActtionScript代码中使用函数的某些优点了。现在,需要学习如何来写函数。写一个函数也被称为“定义”或“声明”一个函数。函数的语法: function 函数名(参数):返回数据类型 函数体 ) 在函数的语法中,要注意如下几个关键点:function关键字告诉Flash,正在声明一个函数。当定义一个函数时,必须像上面那样包括function关键字。函数应该遵守变量的命名规则。就像命名变量那样,给函数取一

4、个能表示其功能的名字是一个好想法。所有函数的定义都必须在函数名字后面包括一对圆括号。在圆括号中的“参数”可以没有。在后面可以读到有关参数的更详细的内容。但是,无论一个函数是否定义了参数,都必须在定义中包括一对圆括号。圆括号后面接着就是冒号和一个有效的数据类型名字。数据类型是函数将返回的数据的类型。在后面会看到如何返回数据。使用Void表示该函数不返回值。函数体是由一对开始和结束波浪式大括号()定义的。现在已经知道基本的语法了,那就看一个非常简单的函数例子吧: function displayGreeting():Void trace(Hello.); 三、调用函数我们将术语“函数”定义为延迟执

5、行的代码块。这就是说,一个函数可以被定义,但直到访问或调用它之前什么也不会发生。可以自己测试一下这一点,即在主时间轴的第1帧中,用如下代码创建一个新的Flash影片: function displayGreeting():Void trace(Hello.); 当测试该影片时会看到,尽管在代码中有一个trace()动作,但什么也没发生。所以,既然知道了如何“定义”函数,就需要学习如何通过“调用”它们而在程序中使用它们。为了调用一个函数,需要使用该函数的名字,并后跟一个圆括号(它被称为“函数调用运算符”)。当调用一个函数时,对函数的调用本身就是一个语句。因此,应该在该语句的后面使用一个分号。下面

6、的例子定义了一个函数,然后调用它。如果想自己学习和测试它,只需将该代码放置在主时间轴的第1帧即可。 function displayGreeting():Void trace(Hello.); displayGreeting();/调用函数 当测试该影片时,在Output窗口中显示如下内容:Hello. 四、传递参数某些函数不需要给它们传递任何信息。例如,前面一节中的dlsplayGreetlng()函数就不需要任何参数。换句话说,许多函数需要给它们传递参数。例如,如果dlsplayGreetlng()函数可以使用不同的姓名来显示个性化的问候,就会使dlspayGreetlng()函数更加有趣

7、了。有了参数,实现这一点就简单了。把上面的函数修改一下,如下所示: function displayGreeting(姓名:String):Void trace(Hello.+姓名) 一旦用这种方式定义了该函数,就可以调用它了,并给它传递不同的参数值。某些例子如下所示:displayGreeting(张三);/显示:Hello.张三displayGreeting(李四);/显示:Hello.李四在一个函数中,一个参数就是一个变量,当调用该函数时就给变量赋值。就像在displayGreeting()函数中所看到的那样,参数被命名为姓名,在每次调用该函数的时候就给该参数设置值。当用值张三调用该函数

8、时,该变量就被赋予了张三;当用值李四调用该函数时,该变量就被赋予了李四。参数(变量)是在函数定义的圆括号中声明的。读者可能注意到了,参数的声明与常规变量的声明相似但略微不同。首先,声明的相似性在于,需要给变量创建一个名字并定义一个数据类型。但是,当声明一个参数时,不需要使用var关键字,也不需要使用分号,并且不能在圆括号中初始化一个参数。下面的代码是不正确地声明参数的例子,将产生错误: /不能使用var关键字。 function displayGreeting(var 姓名:String):Void trace(Hello.+姓名) /不能使用分号。 function displayGreet

9、ing(姓名:String;):Void trace(Hello.+姓名) /不要试着在圆括号中初始化变量。 function displayGreeting(姓名:String=王麻子):Void trace(Hello.+姓名) 如果想在函数中使用多个参数,该怎么办呢?很简单,当定义函数时,可以声明用逗号分隔开的多个参数。同样地,当调用该函数时,可以给它传递多个值,只需简单地用逗号分隔这些值即可。如下是具有多个参数的dlspayGreetlng()函数的例子: function displayGreeting(姓名:String,体重:Number):Void trace(姓名+的体重是:

10、+体重); displayGreeting(张三,50);/显示:张三的体重是:50 ,读者可能注意到了,当开始将越来越多的参数添加到一个函数定义的参数列表中时,代码就开始超出编辑器的边界了。可以在Actions面板中启用自动换行功能。还可以在定义函数时将每个参数(或参数组)放置到新的一行中。这是一个通常采用的习惯,因为它能更容易地阅读一个由许多参数组成的函数的参数列表。语法是相同的,区别仅在于:参数列表中的每个参数都放在新的一行中,以便使它更容易阅读。例如: function displayGreeting(姓名:String, 体重:Number):Void trace(姓名+的体重是:+

11、体重); 注意:定义函数的参数个数与调用时传递的参数个数不一定要相同,当然,如果该有的参数没有的话,可能函数不会正常工作,多个参数是按先后顺序依次“对号入座”的。1、给参数传递值和引用。当给函数传递参数时,参数是用两种方式之一进行传递的:按值和按引用。其区别与数据类型有关。(1)基本数据类型,如string,number,Boolean,是按值传递的。这就是说,值被传递给了函数,而与该值所来自的变量的任何联系都被切断了。换句话说,当值被传递给函数后,任何被用于传递值的变量就独立了。下面是一个例子: function 引用测试(a:Number):Number a+; return a; var

12、 b:Number=5; var c:Number=引用测试(b); trace(b); trace(c); Output窗口会显示如下内容 5 6在这个例子中,尽管b的值被传递给了函数,并且那个值在函数中被增加了1,但b仍保持它的值(5)。为什么?因为b的值被传递给了函数,而不是变量自己。然后,那个值在函数中被赋予了一个名为a的参数,被增加、被返回。然后,返回的值被赋予了一个新的名为c的变量。(2)当引用数据类型被作为参数传递时,它们就按引用进行传递。这就是说,一个被传递给函数的对象是对该实际对象的一个引用。其结果是,在函数中对对象引用所做的任何事情都会影响到该对象本身。没有产生该对象的副本

13、。下面是一个使用名为mBox的MovieClip实例的例子: function move(mA:MovieClip,X:Number,Y:Number):Void mA._X=x; mA._y=y; move(mBox,100,100); 上面这个例子将名为mBox的MovieClip对象移动到舞台的(100,100)处。 2、使用arguments属性。现在所看见过的函数要么不使用任何参数,要么参数被声明为圆括号中的参数列表。但是,不管一个函数是否声明了任何参数,传递给函数的所有参数都被保存在一个名为arguments的特殊数组中。每个函数都有一个arguments变量(对象),当调用函数的

14、时候,就在该函数中创建该变量。ActionScript并不强求函数定义中的参数个数与调用时传递给该函数的参数个数一致。其意思是在调用时没有被传递、但在http:/函数的参数字符串中被定义过的任何值,都会具有一个undeflned值;而在函数调用中传递的任何值,如果在函数的参数定义中没有它,就会被忽略。因此,完全可以定义一个没有参数的函数,但仍然可使用arguments对象传递参数。下面是一个把arguments对象作为数组使用的例子: function traceParams():Void for(i=0;iarguments.length;i+)( trace(arguments); tra

15、ceParams(one,two,three); 在这个例子中,下面的内容会显示在Output窗口中:onetwothree在大多数函数中,声明参数要好得多。当重载一个函数或遇到相似情况时(参见“重载函数”一节),arguments对象很有用。每一个arguments对象都有两http:/个特殊的引用函数的属性。尽管不常使用这些属性(caller和callee),但在某些情况下(特别是在开发高度抽象的函数时)这些属性却有用。如果有一个函数调用当前函数的话,arguments对象的caller属性就返回对这个函数的引用。如果没有另一个函数调用当前函数的话,caller属性就有一个null值。 function function1():Void function2(); function func

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号