1、 Flash ActionScript3.0(面向对象教程)这个,面向对象呢,就是我们一般所说的 OOP(object-oriented program) ,是非常火的一个概念。它起源于上个世纪 60 年代,那历史起源呢也是非常早的,不过,直到 90 年代才成为应用软件开发的主流。面向对象的思想体系包括:第一就是面向对象的设计(OOD ) ;第二呢是面向对象编程,也就是我们刚才所说的 OOP;那第三呢是面向对象分析(OOA) 。面向过程编程与面向对象编程是有一个比较明显区别的,我们之前介绍的一些例子呢都可以看作是面向过程编程,也就是整个程序按部就班的一条一条来执行,这样的这个编程方式呢我们称它
2、为面向过程的编程。你比如说,我们经常所接触到的 trace(“hello world”);,那如果我们要运行它的话,可以直接在输出面板里得到我们所希望的结果。那么这个trace(“hellow world”);呢,本身就是一个面向过程的编程方式,当然它只有一句,只是适合作为一个例子来出现。那么我们现在来看看这个面向对象的风格是一个什么样?我这里已经建立好了一个类,这个类呢,类的名称叫 Main,是我们给它起的类名称。与它对应的,它的构造函数,也就是我们这里要提到的 public function 也要起一个相同的名字叫 Main。这个是 ActionScript 里边的一个内部规定,大家一定要
3、记清楚。那么,除了这两个名称要一致,还要记住的就是我们给这个类的文件也要起一个相同的名称,比如说我们现在这个文件的名称也是叫 Main.as。那么前面呢,它最外面一个花括号是 package,这个 package 是一个类包的路径,比如说,我们要引用它的时候,它就在根目录下,所说的根目录就是要引用它的目录。那如果它在这个根目录的 com 文件夹下,那么我们就要在 package 里注明路径。因为我们现在引用位置呢还是和引用文件在同一个目录下,那么 package 后面没有其它的路径。然后呢,在 package 下边是我们要引入的类包。因为这个 Main 是要扩展 Sprite 这个类,所以呢我
4、们要先引入 Sprite 这个类。然后呢,在构造函数当中,我们执行同样的 trace 函数追踪一下 ActionScript。那么我们整个这个类文件就是这么一个结构,它最外面是类包(package 一对花括号) ,类包内呢是类的结构(class 的结构) ,然后在 class 里边是要声明一些类的属性啊、函数,比不可少的就是构造函数,与 class 的名称要保持一致,这个构造函数呢在这个类被实例化的同时它是要去执行的,其它各自的函数可能有它自己的出发方式,比如说有些会被构造函数调用,有一些是要约定一些侦听方式才去出发的。这个 Main构造函数是类被实例化的同时是一定会执行的。现在我们对它进行实
5、例化,看一下它实例化的过程。我们把刚才的删掉,我们现在呢在第一帧输入 new Main ();我们也有可能用一般所见到的方式 var main = new Main();,先声明一个变量 var main 来对新生成的 Main 进行引用,这样我们以后才能对这个类进行操作,因为它是有一个引用方式的,我们提到的小写 main 就是对 Main 类的实例化,就是它的一个实例。实际上我们现在也不需要对它进行引用,我们可以直接实例化一个 Main 类。我们输出看下,现在我们可以看到它同样输出了 ActionScript。那么,这个就是一个面向对象编程,先有类,然后实例化的这么一个过程。这个面向对象的优
6、势在于它的代码重用,也就是同样一个代码可以反复用,比如说我们有一个庞大的工程,那么我们可以建立与之相应的很多类,在我们需要反复调用某个功能的时候或是反复生成一个实例的情况下,它可以被反复的执行,而且类的结构一般比较僵固的,所以在需要修改某一部分代码或某一部分属性的情况下,直接修改类的一些设定就可以完成。在我们刚才举的例子当中呢,trace 函数是没法体现它的一些优势的。事实上,越是结构复杂,需要人工越多的工作,面向对象的优势就越明显。与之对应的就是一些相对比较简单的一些编程工作,很多程序员会偏向使用面向过程的一个方式,因为它比较符合人的思维习惯,就是我去办事,一条一条去实现。所以呢,面向对象和面向过程各有各的优点。如果我们以后接触一些比较大的工程,我建议大家还是使用面向对象的方式。那么我们平时做练习时不妨使用面向过程的方式,可以非常快的得到结果。总结一下,OOP的优点:第一是代码整洁,便于重用;第二是扩展性强,代码的弹性和适应性都非常优秀;第三就是它有大量的优秀设计模式,可以反复利用;第四是便于团队协作分工,比如说我们刚才的类可以由另外一个程序员去实现,他只要告诉我这个类具体是实现什么功能的,那么马上就可以 new 出来用;第五个 OOP 的优点就是便于二次开发,如果我们发现某个类的功能需要扩展了,需要给它增加新的功能,我们直接修正这个类就可以。