选择显示字体大小

flashmx2004系列教程〈三〉actionscript 2.0-针对oop的关键字和特性

下面我们将真正研究一下as2的特性,在早期往往是在讨论as1复杂的面向对象编程比实际工作更多一些,现在你将很快的看到,你不用花很多时间去争论怎么样做到最好的继承,将代码放置在哪和如何组织好你的代码库。

让我们先回顾一下oop基础,oop的最基本单元是对象,它包含两部分:代码和数据。由于对象是一种以自己自足的形式出现,因此它的数据和代码(方法)不需要公开。就象一个黑盒子,对象负责以自身的方法去管理自身的数据,对象与对象之间通过传递信息通讯。这些信息以公用或公开的方式传递和接收。而内部的数据和方法并没有直接参与其中,这就是oop的基本原理。

在oop的设计中,比做是一张大图,要想到重点和要实现的目标,以及各个部分之间的联系。将这张大图分成小的单元,并且保证各自的自身独立性,那么整个项目就很容易完成。而这些小的单元在oop中就被称为类。所有这些as2都提供了很好的支持。

下面这些关键字与oop有关:

classinterfaceextendsimplements
publicprivatestaticdynamic
importgetsetintrinsic

我们不在重复mcromedia的帮助文档中对每一关键字的描述,我们可以用实例来说明。注意关键字intrinsic是mcromedia内部使用的关键字。这里面没package也就包的关键字,但是它与类路径的工作方式是很重要的,就象是其它语言中的包一样,如java

下面我们来看一下例子,在as1中的类,将其改写为as2的类。

// 构造函数
_global.parent = function(name) {   this.init.apply(this, arguments);};
// 类的属性parent.lastnames = new array();
parent.prototype.init = function(name) {   this.lname = name;   parent.lastnames.push(name);   this.id = parent.lastnames.length-1;   trace("added '"+ parent.lastnames[this.id] +"' at: "+ this.id);};
parent.prototype.getlastname = function() {   return (this.lname);};
parent.prototype.setlastname = function(s) {   this.lname = s;   parent.lastnames[this.id] = s;};
parent.prototype.getnames = function() {   return (parent.lastnames);};
parent.prototype.addproperty("lastname", parent.prototype.getlastname, 
parent.prototype.setlastname);parent.prototype.addproperty("names", parent.prototype.getnames, null);

上面的代码改写为as2就向下面这样:

新的关键字被应用在如下的例子中:class, private, public, static, get, set

class parent {   private var lname:string = "";   private var id:number;   private static var lastnames:array = new array();
   // 构造函数   public function parent(name:string) {      init.apply(this, arguments);   }
   private function init(name:string):void {      lname = name;      lastnames.push(name);      id = lastnames.length-1;      trace("added '"+ lastnames[id] +"' at: " + id);   }
   public function get lastname():string {      return lname;   }
   public function set lastname(s:string):void {      lname = s;      lastnames[id] = s;   }
   public function get names():array {      return lastnames;   }}

通过上面的as1和as2执行同一个类。我们可以看出二者非常的相似,主要的不同以as2为例:

1。以外部文件的形式存在如.as,同时注意类的名称要与外部文件名称相同。

2。as2区分大小写,在as2中object 和 object是不同的。

3。类的方法定义在类的内部。

4。类的内部不在允许有内部类出现。

5。关键字如public,private,static等写在类方法或属性的前面。

6。数据类型写在方法或属性名称的后面如:name:string;

7.创建getset方法更容易使用如下方法:[modifier] function getset functionname(argument[:type,...])[:type] {}

  


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons