关于类的一些定义和说法,官方文档里面提供了完整定义和说明,这里只是大概提示一下,从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);
这样是不是很爽呢?但是我们发现出错了,为什么这样呢?原因是
private function SayHello():void
{
//添加行为
}
我们在函数的声明同时,设定了private 类私有,很抱歉告诉你 这样的调用是没有效果的,声明了private关键字的 只有在类中才可以使用到,如果要在创建的对象里面使用,那么只需要改成
public function SayHello():void
{
//添加行为
}
这样就ok。
五。需要理解问题:
如何创建自己的类?
如何定义属性?
如何自定义方法?
还有一些声明关键字如何理解呢?