当前位置: 代码迷 >> Web前端 >> 《AS 三 Cookbook 中文版》 第二章. 自定义类 2.0. 简介
  详细解决方案

《AS 三 Cookbook 中文版》 第二章. 自定义类 2.0. 简介

热度:595   发布时间:2012-11-22 00:16:41.0
《AS 3 Cookbook 中文版》 第二章. 自定义类 2.0. 简介

?ActionScript 3.0 最本质的东西就是类,也就说它是面向对象的。 ActionScript 3.0 在面向对象基础上重新构建了ActionScript 核心。如果在Flex上编写ActionScript 3.0,代码都被放在 标签内,所有ActionScript 都必须以类的形式出现。这一章讨论在ActionScript 3.0 上编写自定义类。
2.1. 创建自定义类
[/1b]
问题
[/1b]我要编写自己的类
[1b]解决办法
[/1b]保存一个以.as扩展名的新文件,类名和文件名相同,编写如下结构:
package package {
public class Class {
}
}
讨论[/1b]
在ActionScript 3 中,类是最基本的编程结构,所以必须先掌握编写类的基础知识。对于初学者,所以得类都必须放在.as文件中,每个as文件里只能定义一个public 类,而且类名字要与文件名相同。比如:你的类名为 Example ,那么文件名必须为 Example.as.
在 ActionScript 3.0 中所有的类都必须放在包中。包是对类进行分类的单位,其意义相当于文件系统的目录。包路径相对于classpath(类路径),默认的类路径就是项目的根目录(就是包含mxml文件的所在目录),因此顶级的包目录就是项目根目录。包申明如下:
package name {
}
如果类定义在顶级包中,那么包名可以不指定,如:
package {
}
当类文件保存在子目录,那么包名就是它的保存目录,例如,文件保存在example目录,那么包这样申明:
package example {
}
如果类文件保存在 example 目录的子目录 subpackage, 应这样申明:
package example.subpackage {
}
包是很重要的,它可以避免类名称空间冲突。例如,有两个开发者写了两个类文件都叫MessageManager. 这两个类虽有相同名字,但是完成不同的任务,因此你不能把这两个类放在一起,如果这样做,编译器将不知道调用哪个,一个办法是取个唯一的类名字。
你可以取名字叫 EmailManager 和 BinarySocket- MessageManager, 这是可以的,但是如果你管理成千上万的类这时就很困难了。因此用包可以很好的解决这个问题,即使你有很多相同的类名,只要它们不在同一个包就不会冲突,如把 MessageManager 放在net.messaging.email 包另一个放在net.messaging.binarysocket 包中。
一般取包名都以自己的网站域名,这样可以最大限度避免和别人的包名相冲突。
当有多个项目公用一些类,那么这些类直接被放在主包 中的子目录中。例如,上面的MessageManager 类放在com.examplecorp.net.messaging.email 和 com.examplecorp.net.messaging.binary- socket 包中。
下一步就是申明类自身:
public class Name {
}
类申明必须在包内。下面的代码在顶级包中定义了叫 Example 的类:
package {
public class Example {
}
}
类主体在括号内定义,包括属性,方法。属性就是和类关联的变量,使用var关键字申明他们,属性也有修饰符指定其范围。修饰符有:
?
private
该属性只有类实例自身可访问.
?
public
该属性可以被任何类实例访问(若直接被类访问可设置成static)
?
protected
该属性只被自身类实例或派生类实例访问。
?
internal
该属性可被包内的类实例访问。
默认情况下是属性被指定为 internal ,除非自己指定修饰符。大多数情况,属性被指定为 private 或protected。按照习惯约定,private 和 protected 申明的属性名称都在前面加上下划线。看下面的例子:
package {
public class Example {
private var _id:String;
}
}
与类关联的还有方法,你可以使用function关键字像申明函数那样申明方法。和属性一样,方法也有修饰符(public, private, protected, internal)。如果方法被类实例访问可设置为public(直接被类访问则加上static).如果方法只在类内方法则被设置为 private 或 protected。下面的代码申明一个方法叫getId( ):
package {
public class Example {
本文转自:http://www.5uflash.com/flashjiaocheng/Flash-as3-jiaocheng/1846.html