阳光VIP

少壮不努力,老大徒伤悲。平日弗用功,自到临期悔。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

AS3.0基础学习笔记(5): 类

Posted on 2012-02-17 20:01  阳光VIP  阅读(181)  评论(0编辑  收藏  举报

关于类的一些定义和说法,官方文档里面提供了完整定义和说明,这里只是大概提示一下,从As2.0 开始其实已经支持了一些类的定义,支持一些继承关系,到了3.0后,在原来的基础上增加更多关于面向对象的支持,加入一些数据访问的限制:如protected 和 internal一些属性访问,这些内容增加,加强了数据封装性,隐蔽性,像C++ 和java一样,可以定义自己的类,定义自己的方法和属性,可以限制数据访问,类中哪些数据是可以访问的,那些是不能访问的。这些都有很好的支持。

 

类的格式定义:

 

Public class 类名

{

  var i:int=0;

 

}

 

带包的定义

package

{

   import flash.display.Sprite;

   import flash.events.*;

 

   public class Hello extends Sprite

   {

       public function Hello()

       {      

           trace("欢迎你进入Flash世界里面");

          

       }

   }

}

 

package.文件夹名

如果类中,在一个文件夹里面,那么包需要加上一个路径,package.example

package. example

 

{

   import flash.display.Sprite;

   import flash.events.*;

 

   public class Hello extends Sprite

   {

       public function Hello()

       {      

           trace("欢迎你进入Flash世界里面");

          

       }

   }

}

 

 

.类中属性定义

看到上面的定义,如果我们想在类中添加属性,那么我们只是需要在类里面添加相应的数据

 

以一个Rpg游戏来考虑的定义一个角色类,看下面的代码

package. example

 

{

   import flash.display.Sprite;

   import flash.events.*;

 

   public class player extends MovieClip

   {   private var player:MovieClip;//定义个角色

       Private var Hp:Number;//定义角色血值

      Private  var MaxHp:Number;//定义角色最大血值

       public function Hello()

       {      

           trace("欢迎你进入Flash世界里面");

          

       }

   }

}

 

 

在属性访问权限里面,设置private私有变量,即当类创建对象时候,对象不可以调用里面一些私有属性。

 

如果设置为

Public 或者protected 创建的对象可以访问到里面的属性

 

public  var Hp:Number;

 var _player:player=new player();

_player.Hp=5;

trace(_player.Hp);//5

 

private var Hp:Number;

var _player:player=new player();

_player.Hp=5;

trace(_player.Hp);这样就会出错

 

 

三.类中方法定义:

类中的方法定义其实很简单,我们看一下As3.0定义函数

 

function 函数名():返回类型

function 函数名(一个或者多个参数):返回类型

一种是带参数,一种是不带参数类型的

 

package

{

      import flash.display.MovieClip;

      import flash.events.*;

 

      public class Hello extends MovieClip

      {

           private var Hp:Number;

 

           public function Hello()

           {

 

                 trace("欢迎你进入Flash世界里面");

 

           }

           private function SayHello():void

           {

                 //添加行为

           }

          

           private function Say(word:String):String

           {

                

           }

      }

}

 

这里定义两个函数,一个是function SayHello():void 不带参数的,一个是形参数

function Say(word:String):String 返回一个字符串类型

 

当然这些是我们自定义的方法,而类中,function Hello()构造函数已经是一个方法了。创建对象的时候,会调用函数里面的行为

 

打个比方var A:Hello=new Hello();addChild(A)

那么输出的是"欢迎你进入Flash世界里面" 里面调用了跟踪

                 trace("欢迎你进入Flash世界里面");语句

 

 

 

四.类中方法调用:

 问题,如何去调用自己创建的方法。方法很简单,我们首先创建类对象,然后使用

 

对象.方法名 这样就可以调用了

例如:var A:Hello=new Hello();

addChild(A);

  1. A.     SayHello();

 

这样是不是很爽呢?但是我们发现出错了,为什么这样呢?原因是

private function SayHello():void

           {

                 //添加行为

           }

 

     我们在函数的声明同时,设定了private 类私有,很抱歉告诉你 这样的调用是没有效果的,声明了private关键字的 只有在类中才可以使用到,如果要在创建的对象里面使用,那么只需要改成

 

public  function SayHello():void

           {

                 //添加行为

           }

 

这样就ok。

 

 

五。需要理解问题:

如何创建自己的类?

如何定义属性?

如何自定义方法?

 

还有一些声明关键字如何理解呢?