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

         找回密码
         立即注册

        QQ登录

        只需一步,快速开始

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

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

        26

        主题

        45

        帖子

        345

        积分

        管理员

        Rank: 9Rank: 9Rank: 9

        积分
        345
        认识了变量、认识了函数、还认识了逻辑判断和循环。本篇是基础知识的最后一篇,我们一起来了解面(zui)向(niu)对(B)象(de)编程的概念——类。



        “类”是面向对象编程中非常重要的概念。也是我认为非常贴近大家思考方式的一种编程方式。什么是类?你可以把类理解为一个虚拟化的概念。
        什么是虚拟化的概念?举一个栗子。如果你看到这两个字:“?#21482;保?#20320;会想到什么?你的脑海里可能会涌现出以下这些概念:
        1.一种通讯工具
        2.有一个开关键
        3.有一个屏幕
        4.可?#28304;?#30005;话
        5.可以接电话
        6.可以充电
        7.有待机时间
        8.有电池
        ……

        上面这些仅仅是一个概念,只要是?#21482;?#23601;一定符合这个概念。在面向对象的编程里,我?#21069;?#36825;种概念,就叫做“类”。

        ?#36947;?/font>

        思考一下,“?#21482;?#36825;个“类”和现在拿在你手里的?#21482;?#26377;什么不同?
        我们这里所描述的“?#21482;?#20165;仅是一个存在于文?#31181;小?#25110;存在于我们想象中概念(准确的术语,它是抽象的),只要符合这些概念所描述的功能,就可以称之为一部?#21482;?#27604;如你现在手里在玩的?#21482;?#20320;朋友的?#21482;?#31561;等。都可以称之为“?#21482;保?#23613;管它们可能品牌不一样,外观不一样,?#38405;?#20063;不一样。
        而拿在你手里的?#21482;?#21364;截然不同,它是唯一的,就是你手里正在把玩着的那个实体的机器,不是别人的,尽管它可能和其他的?#21482;?#19968;模一样,但它的确是独一无二的。它有固定的尺寸、有实体的电池、有固定的待机时间,更重要的是,有固定的主人(你)等等。它一定符合“?#21482;?#30340;概念,或者说,它一定是一个“?#21482;?#31867;的物体”。而和概念完全不同的是,它是?#23548;?#23384;在的,并不是一个存在于言语或思维中间的定义。
        这种真实的村在,在编程世界里,我们称之为一个类的“?#36947;薄?#22914;:“我的?#21482;本?#26159;“?#21482;?#30340;一个?#36947;?br />
        ?#20040;?#30721;来表述的类

        如何?#20040;?#30721;来表述一个类?我们在前面几篇教程中,已经接触了一部分编程的知识。现在,我们直接来看代码。


        类一般是一个独立的文件,你可以在自己的项目src目录下,新建一个Shouji.ts文件(一般情况下,我们会让文件名和类名一致,以方便以后自己查阅)。然后敲入以上代码。让后,我们一起看以下这些代码都干了什?#30784;?br />
        首先,我们通过class Shouji来定义了一个名字为Shouji的类,接下来就跟随了一?#28304;?#25324;号。这?#28304;?#25324;号和我们在前面学到的函数的大括号是一样的。用来标明了大括号中的代码是属于这个类(Shouji)的。所以,第一步,我们可以把代码进行简化,看成是下面这样:


        1. class Shouji
        2. {
        3. }
        复制代码


        这样,我们就定义好了一个类,那么,这个类可以干什么呢?在前面的示范代码中,我们看到了三个定义:


        1. class Shouji
        2. {
        3. public zhuren:string;
        4. public color:string;
        5. private cpu:string;
        6. }
        复制代码


        public 和 private是个什么鬼?我们在前面的教程里,学到了var a:string=10来定义一个变量,对不对?这里所使用的public和private,你可以理解为和var的功能一样,都是用来声明一个变量。不同的是,他们赋予了后面的变量不同的访问权限。

        这是类的定义里一个非常重要的部分。我们还是从?#21482;?#30340;例子来说起。当你拿着一部?#21482;?#30340;时候,别?#22235;?#22815;看到什么?第一,能看到?#21482;?#30340;颜色,第二,能知道?#21482;?#26159;你的,第三,如果有人对电子产品足够熟悉,有可能能看的出?#21482;?#21697;牌。

        那么,他们能知道你的?#21482;?#37324;有几个焊接点吗?别说他们了,你都不知道。这个时候如果开玩笑,就会说“你怎么不去问问我的?#21482;?#21602;,它或许知道”。

        对了,?#21482;?#26377;几个焊接点,这个还真是只有?#21482;?#33258;己知道。在编程的世界里,我?#21069;选?#28938;接点”这种,除了?#21482;?#33258;?#28023;?#21035;人根本不知道的数值,成为“?#25509;小薄?#32780;那些是人都知道的数值,成为“公?#23567;薄?#32780;区分他们的方式,就是通过不同的关键字来定义。在上面的代码中,我们就是通过public来定义了“公?#23567;?#21464;量zhuren和color,因此,大家都可以知道这个?#21482;?#30340;主人(zhuren)和颜色(color),而通过private来定义了“?#25509;小?#21464;量cpu,即大家都不会知道,这个?#21482;?#30340;CPU型号是什?#30784;?br />
        在类的定义中,这些定义好的变量,我们称之为“属性”。在上面的代码中,我们定义了zhuren、color、cpu三个属性,其中cpu是私有的。另外两个是公有的。公有属性和私有水星在编程中有什么区别?我们在后面会看到。

        再继续向下来看代码,我们又增加了一个看起来跟我们前面教程所提到的函数很相像的部分:



        1. class Shouji
        2. {
        3. public zhuren:string;
        4. public color:string;
        5. private cpu:string;

        6.  public kaiji():void
        7.  {
        8.   trace(this.zhuren+'的?#21482;?#24320;机了');
        9.  }

        复制代码


        如果把public kaiji换成function kaiji,或许你就会发现,这就是一个函数。和刚才变量的定义一样,我们通过public或者private替换了原来的function,来定义公有或者似有的函数。在类的定义中,我?#21069;?#36825;种类的内部定义的函数,称之为“方法”。再来看我们刚才提供的范例代码,可以发现我们定义了两个公有的方法,kaiji和guanji,功能分别是打印“开机了”和“关机了”到控制台。

        ?#20040;?#30721;来构建?#36947;?/font>

        类写好了,那么如何使用它呢?这时,就需要用到我们刚才介绍的?#36947;?#30340;概念了,先看代码:



        我们通过new操作符来构建了一个?#36947;?#28982;后给这个?#36947;?#30340;zhuren、color进行了赋值,并且先后调用了kaiji和guanj两个方法。现在,我们可以清晰的看到public和private的不同了。在?#20040;?#30721;的时候,编辑器会给出我们代码提示,你可以看到,在代码提示中,有zhuren和color两个属性,唯独没有定义为private的cpu属性,因为它是私有的,无法从外部访问到。



        如同世界上有千千万万个?#21482;?#19968;样,我们也可以定义很多个?#36947;?#20294;是他们都将是Shouji这个类的?#36947;?#37117;拥有zhuren和color两个公有属性。下面,我们?#20040;?#30721;来证实以下,?#36947;?#20043;间是完全独立的(比如你和朋友的?#21482;?#34429;然同款同色同型号,但是却是两部不同的?#21482;?br />
        小试验

        修改Shouji的kaiji方法,变?#19978;?#38754;这样:

        public kaiji():void
        {
         trace(this.zhuren+'的?#21482;?#24320;机了');
        }

        在构建?#36947;?#30340;时候,额外构建一个?#36947;?#25226;刚才的代码变?#19978;?#38754;这样:



        运行代码,你就会发现控制台打印了两行不一样的文字:





        到本篇为止,我们介绍了关于编程的基础知识和概念,从变量的定义、函数的定义和使用,到逻辑判断、循?#20998;蔥小?#20877;到今天介绍的面向对象的基础知识。接下来,我们将通过视频教程的方式,真正开始编写自己的游戏作品。如果前面的基础知识还有没有掌握,可以翻回去看?#30784;?br />
        接下来怎么办

        如果你已经阅读了全部的四篇基础教程,就可以进入D5游戏工坊,开始观看官方视频教程了。帮你快速入门微信小游戏和H5游戏开发。拿出?#21482;?#36890;过微信扫描以下二维码即可

        回复

        使用道具 举报

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

        本版积分规则

        特码生肖图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>