• <acronym id="2ng7a"><wbr id="2ng7a"><meter id="2ng7a"></meter></wbr></acronym>
      1. <nav id="2ng7a"></nav>

         找回密码
         立即注册

        QQ登录

        只需一步,快速开始

        HTML5网页游戏和微信小游戏极速入门教程(二)基础知识 II

        7
        回复
        3995
        查看
        打印 上一主题 下一主题
        [ 复制链接 ]

        26

        主题

        45

        帖子

        341

        积分

        管理员

        Rank: 9Rank: 9Rank: 9

        积分
        341


        在上一篇教程中,我们讨论了变量。在本篇教程中,我们将讨论新的概念“方法”和“作用域(也称为为生命周期,这名字太科幻了,?#19968;?#26159;喜欢作用域)”

        在编写程序的时候,我们都会尽量避免去重复地写代码。试想一下老师让我们回答问题时的场景。例如,老师把睡的迷迷糊糊的小明喊起来,问他“30+50等于多少”?小明回答“80”。然后老师又问,“那100+20呢?”,小明回答120。你是不是发现了,老师只是负责提出问题,而我们只需要告诉老师结果。在这个过程中,老师根本不管你脑子里是怎么计算的,只要你告诉他的结果是正确的就可以了(当然人的回答有时候是错误的……)
        这个过程,就是我们今天所说到的“方法”。我们自己就是老师,而在程序里编写的“方法?#26412;?#26159;学生。来看下面的代码。


        1. function jiafa(a:number,b:number):number
        2. {
        3.     var c:number = a+b;
        4.     return c;
        5. }
        复制代码


        如同使用var来声明一个变量一样,我们通过function来声明一个方法(有的文章里会直译为“函数”,台湾同胞则称之为“函式”)。因此function jiafa及表示我们需要声明一个名字为jiafa的方法。方法名后面的括号如上面代码的(a:number,b:number)部分。是用来说明这个方法运行时需要提供的参数的。像我们上面所举的例子,老师询问学生加法的结果,就是一个需要带参数的例子,因为老师必须要提供需要我们计算的两个数字,我们才能给出结果。而有一些情况,是不需要参数的。例如,老师问你“你是203班的吗?”,你只需要回答是或者不是就可以了,老师不需要给你附带任何条件。在这种情况下,这对用来说明参数的括号里就不用写任何内容,所以函数的声明方式会变成function jiafa()。

        当然,我们还是要回到我们现在的例子上?#30784;?#25105;们现在知道了这个方法需要两个参数,a和b,并且根据第一次教程的知识,我们知道a和b还都必须是数?#20013;?#30340;。而这个方法的作用是什么呢?是告诉我们a和b相加的和。我们称之为方法的“返回结果”。在声明参数的括号后面,跟随的:number,就是用来说明方法的返回类型的。

        因此,我们现在通过第一?#20889;?#30721;,知道了,我们声明了一个名字为jiafa的方法,这个方法在使用的时候,需要提供两个数?#20013;?#30340;参数,而这个方法会给我们返回一个数?#20013;?#30340;数值。

        接下来,就是方法的?#23548;?#20869;容了。这个部分是封闭的,如同老师问我们问题的时候,完全不用管我们的大脑是怎么计算的。我们的大脑是独立且封闭的。在编程的世界中,我们通过一?#28304;?#25324;号来做到这一点。你可以看到在第二行和最后一行,有一?#28304;?#25324;号把中间的内容包裹了起?#30784;?br />
        请一定记住这个概念,在函数名定义后面的大括号,分割出了一块独立的空间。

        接下来,在括号里的内容我们在第一篇教程中已经接触过了。我们声明了一个数?#20013;?#30340;变量c,它的值是a和b的和。

        然后,我们接触到了一个新的关键字,return,英文直译为返回。这个就是我们前面所说的返回操作了。可以看到,我?#21069;裞返回了回去。使得这个方法功能得到了实现——我们拿到了a和b,然后计算了a和b的结果,并且返回了回?#30784;?br />
        那么,方法究竟给我们带来了怎么样的编程改变呢?来看下面的代码:

        1. var n1:number = jiafa(10+20);
        2. var n2:number = jiafa(20+30);
        3. var n3:number = jiafa(45692+234567);
        复制代码


        明白了吗?现在我们再计算加法,只需要反复使用我们已经写好的方法就可以了。而当我们发生任何功能变化的时候,比如我们需要让加法的结果不超过100,那么只需要改动方法的内容,那么所有使用这个方法的位置就都发生了计算结果的变化。

        另外请注意,我们所编写的代码,都是从上到下运行的,刚才的代码完整看下来应该是这样的:


        1. function jiafa(a:number,b:number):number
        2. {
        3.     var c:number = a+b;
        4.     return c;
        5. }

        6. var n1:number = jiafa(10,20);
        7. var n2:number = jiafa(20,30);
        8. var n3:number = jiafa(45692,234567);
        复制代码


        程序“自顶向下”运行(至少现在学到的是这样的),首先定义了方法jiafa,然后去使用这个方法。想想看,如果把使用的代码挪到前面会怎么样呢?那个时候,程序根本不知道jiafa是个什么鬼,因此就会报错啦:)

        你可以动?#20013;?#19968;个方法来实现两个数字的乘法或者除法,或者写一些更复杂的计算方法。

        作用域


        接下来,我们讨论一个新的概念,“作用域”。啥是作用域?你可以把他理解为所有权。比如,你口袋里有50块,我可以直接花吗?显然不行,因为这个钱不是我的。我如?#25991;?#33457;这个钱?必须通过你,你要把钱给我,我才能花。对吧

        在编程的世界里,我们通过作用域来决定一个方法或变量的归属。再来看我们刚才写的代码:


        1. function jiafa(a:number,b:number):number
        2. {
        3.     var c:number = a+b;
        4.     return c;
        5. }
        复制代码


        我们在jiafa这个方法内,定义了一个变量c,刚刚我们还特意强调过,我们通过大括号划出了一个独立的空间。而c这个变量刚好在空间内。因此,c的作用域就限定在了方法jiafa内。如果jiafa是你,那么c就是你口袋里的钱。他变多还是变少,除了你之外,别人是不能决定的。而对于程序世界里的c而言,就只能在jiafa这个方法的内部使用,外部是无法调用到的。你可以这样试一下:


        1. function jiafa(a:number,b:number):number
        2. {
        3.     var c:number = a+b;
        4.     return c;
        5. }

        6. trace(c)
        复制代码


        我们在方法之外打印一下c,你会发现是一个无效的值"undefined"。因为在jiafa外,根本没有定义过c这个变量。

        再来看一个例子:


        1. var n:number = 50;
        2. function jiafa(a:number,b:number):number
        3. {
        4.     var c:number = a+b;
        5.     trace(n)
        6.     return c;
        7. }


        复制代码


        你觉?#36855;?#34892;结果是什么?是的,结果会输出50。如同你口袋的钱和大街上掉的一堆钱。你可以去捡,别人也可以去捡。n是声明在方法之外的,因此,在方法内页可以使用它。而c声明在方法之内,外面却不能访问。

        因此,我们在编程的时候,尽量不要让外面的变量名和内部的变量名一样,否则自己都会被搞晕的。

        第二篇教程就先到这里。下一篇教程,我们将会接触到逻辑判断。希望你的编程之旅愉快:)
        回复

        使用道具 举报

        1

        主题

        3

        帖子

        19

        积分

        新手上路

        Rank: 1

        积分
        19
        沙发
        2018-8-5 16:46:02 只看该作者
        万分?#34892;?/td>
        回复

        使用道具 举报

        0

        主题

        3

        帖子

        24

        积分

        新手上路

        Rank: 1

        积分
        24
        板凳
        2018-8-17 09:34:53 只看该作者
        怎么获得阅读权限
        回复

        使用道具 举报

        26

        主题

        45

        帖子

        341

        积分

        管理员

        Rank: 9Rank: 9Rank: 9

        积分
        341
        地板
        楼主 2018-8-22 15:24:25 只看该作者

        第三篇教程还在编写?#23567;?#26368;近生病了,没有更新:)抱歉。完成后会开放阅读
        回复

        使用道具 举报

        0

        主题

        2

        帖子

        3

        积分

        新手上路

        Rank: 1

        积分
        3
        5#
        2018-11-15 15:57:23 只看该作者
        无法按照你的代码调试出结果

        捕获.JPG (65.71 KB, 下载次数: 3)

        捕获.JPG
        回复

        使用道具 举报

        26

        主题

        45

        帖子

        341

        积分

        管理员

        Rank: 9Rank: 9Rank: 9

        积分
        341
        6#
        楼主 2018-11-16 20:00:22 只看该作者
        fengxiangtc 发表于 2018-11-15 15:57
        无法按照你的代码调试出结果

        项目是使用D5的编辑器创建的吗?
        回复

        使用道具 举报

        26

        主题

        45

        帖子

        341

        积分

        管理员

        Rank: 9Rank: 9Rank: 9

        积分
        341
        7#
        楼主 2018-11-16 20:04:31 只看该作者
        fengxiangtc 发表于 2018-11-15 15:57
        无法按照你的代码调试出结果

        论坛回复可能比?#19979;琎Q群:425823401
        回复

        使用道具 举报

        0

        主题

        8

        帖子

        31

        积分

        新手上路

        Rank: 1

        积分
        31
        QQ
        8#
        2019-2-17 21:03:51 只看该作者
        D5Power 发表于 2018-11-16 20:04
        论坛回复可能比?#19979;琎Q群:425823401

        了解,马上进群
        回复

        使用道具 举报

        您需要登录后才可以回帖 登录 | 立即注册

        本版积分规则

        特码生肖图2018
      2. <acronym id="2ng7a"><wbr id="2ng7a"><meter id="2ng7a"></meter></wbr></acronym>
          1. <nav id="2ng7a"></nav>

          2. <acronym id="2ng7a"><wbr id="2ng7a"><meter id="2ng7a"></meter></wbr></acronym>
              1. <nav id="2ng7a"></nav>