[Flex 2] 03 ActionScript

 

 

####################
# 面向对象编程概念
####################
 

1 类文件

      区分OOP程序和过程式程序的是代码的拆分方式。过程式程序使用的是长序列的代码。而OOP程序则会把代码 分成多个更小、更专门化的文件,这些文件被称为类文件(class file)

      类文件就是一个独立的程序,其中包含执行某个专门任务或某组相关任务所需要的全部变量[也叫属性(property)]和方法。它们还充当着对象(object)的基础或模板。对象即类文件在内存中的一个副本。在所有项目中,类文件和它们创建的对象都可以根据需要互相调用。
      因为类文件是独立且专用的,所以我们可以随时在任意项目中使用它们。从本质上讲,AS 3.0 和其他OOP编程环境一样,只是类文件的一个大型集合。在使用AS 3.0工作的时候,类文件的库可能会增大。我们可以编写自己的类文件,也可以从各种来源下载它们。最后的结果就是:随着时间的推移,我们的编码工作会越来越少,对可用类文件及其使用方法的研究则会越来越多。编码工作的减少意味着更快的项目完成速度和更低的出错率。在往下学习过程中,我们会用到各种各样的类文件。要点即:不要做多此一举的事。如果已经有现成的,那就直接用好了。

      所有类都附有两个潜在的编程构造:属性和方法(method)。之所以说“潜在”,是因为类文件并不是必须具备这两个构造。属性和方法是OOP术语。属性就是附加到类文件上的变量,方法则是附加到类文件上的函数。
    (一些书籍会提到类文件所附的第3个构造:事件监听器(event listener),或简称事件( event ),在我/*(作者)*/看来,事件监听器就是一个专用方法)

2 继承

      类文件是一种将应用程序模块化成多个小的、可复用构建块的强大方法。而继承(inheritance)让我们又有了一个可复用性因素。可类比:

            试想我们有一个称为Animals的类。其内是一些无视动物类型、与所有动物相关的属性和方法。现在,假设我们需要编写一个称为Cats的类。猫显然是动物。作为程序员,你想重新编写与动物关联的全部属性和方法,然后再添加与猫相关的特定属性和方法吗?大家八成是不乐意的!那太费时间了。相反,我们要做的全部工作就是编写下列这行代码:

        public class Cats extends Animals

            这行代码允许新类Cats访问与Animals关联的属性和方法。

            现在,假设我们要再编写两个类LongHairShortHair。这两个类都可以扩展(extend)Cats类,后者又会扩展Animals类。

      层级越往下,类文件的专用程度越高。

      继承和扩展一词是等同的。

      有趣的是,升到所有层级之上的时候,就会来到一个无所不包的起点。该起点是一个称为Object的类。实际上其他所有类文件都自动继承自这个类文件。

 

3

 

      库中有成百上千类文件后,我们就会想把它们组织到相关的组中,在OOP程序中,是通过创建目录结构的方式来组织它们,就像在硬盘驱动器上整理其他事物那样。不过,类文件在必要的时候需要互相调用。为了让这个过程运转得容易一些,我们不是输入目录的路径,而是把这些目录结构称为包(package)。每个类文件中都会有相应代码来标识它所属的包。我们所要做的就是在需要的时候创建到这些包的引用。
      AS 3.0将包的概念向前推进了一步。诸如Java之类的大多数OOP环境只允许我们将整个类文件打包。AS 3.0 则允许我们将各个方法和属性分别打包。这意味着我们可构建属性和方法库,且它们不必与特定的类文件相关联。且在这之后我们可让类文件在需要时访问这些属性和方法。这一强大的功能可为我们节省大量的编程时间和精力。

      此外,包还可控制关键词publicprivate的拥有者所能看到的信息。

 

4 ActionScript 3.0 Language Reference

 

      善用之!

 

5 面向对象的系统设计

 

      一些高级应用程序需要用到大量的对象,UML就是用来设计这些对象之间的交互方式的。它还解决了类文件自身的设计和架构。

      假定我们刚刚完成了项目所需的全部规划文档,并且写好了用例分析。现在开始逐句地阅读写好的文档。每个句子中的名词都可能代表着所需要的类文件。对于每个类文件,形容词就是与这个类文件相关的属性,动词则是与其相关的方法。

 

####################
# 类文件初探
####################

 

1 理解代码

      包是组织相关类文件的一种方法。它会把类文件编组到目录结构中。
      和如今的其他OOP编程环境不同,AS 3.0要求所有类文件都属于一个包。这是必要条件,而非可选条件。因此,所有包文件的代码必须以关键词package开头,后跟一对大括号。

 

      Code:

      package {
            import flash.display.Sprite;

            public class chapter3ActionScript extends Sprite

            {

                  public function Chapter3ActionScript()

                  {

                  }

            }

      }

      在看到与包相关的大括号时,应注意它们囊括了类文件的所有代码(根据缩进格式可以很容易地看到这一点)。还应注意关键词package之后并没有名称。这意味着当前的目录Chapter3ActionScript/bin就是包。为什么不根据需要移动类文件所处的位置呢?因为这不是个好做法。在很多情况下,那些类文件可能需要访问其他类文件,而后者可能也需要访问另外的类文件,等等。一旦移动了某些文件的位置,类或代码文件就不知道该去哪里找它们,最后我们就会乱作一团。

    import语句允许类文件与其他包中的类文件对话。它并不会移动其他类文件的位置或制作副本。它只是创建一个路径或引用,将那个类的功能有效地导入到包中,以方便我们使用。它不会给随后的SWF文件添加额外的大小。
      注意Sprite类文件属于flash.display包。虽然包是一个目录结构,但大多数OOP环境会使用一个点(.)来表明子目录级别。这意味着flash目录下有一个名为display的目录。

      (不要寻找目录,你找不到它。内部的AS 3.0包被归档在叫做JAR文件[JAR代表Java Archived(Java归档)]的压缩文件中)

      类定义不是语句,所以代码行结尾不需要有分号。

      类文件名与包含该类的文件名称须匹配。

 

2 类文件功能

2.1 注释

 

      Code:

      /*This file was created on 4/10/2006
        by Charles E. Brown
        to demonstrate the parts of an ActionScript 3.0 class file*/

      以上为作者为类文件注释。

2.2 使用trace()方法

 

    trace()为顶级函数(top-level function),可随时使用。

 

2.3 转义序列

 

##############################
# MXMLActionScript 3.0的结合
##############################

 

1 添加AS代码

 

      Code:

      <mx:Script>
      <![CDATA[

      ]]>
      </mx:Script>

      上面代码称为CDATA(CDATA section),它是XML文档中的常见构造。实质上,它的作用是分离出部分文档以进行专门的处理,并防止其内包含的代码和XML文档的其余部分一起参与解析。CDATA节通常用于添加非XML代码。不过在Flex中,它主要用于向MXML文档添加AS代码。

CDATA会告诉Flex不要像处理MXML那样处理其内包含的脚本)

 

2 AS构造

 

2.1 变量

      变量(variable)是内存中用来临时存储数据,以备将来使用的某个地方。
      变量可比作容器,用来存放特定类型的容器。即,变量只存放某个特定类型的项,在编程术语中,这叫做强类型(strict typing),它意味着我们要将变量指派给一个类文件,该类文件的属性和方法会告诉变量什么可以做,什么不可以做。

 

    Code:

    <mx:Label id="myLabel" text="{myName}" />

      其逻辑含义是:text属性应该读取变量myName,然后用其内容填写Label控件。

2.2 函数

    Code:

    function addNumbers():String

      函数的第1行叫做签名(signature)

    return 行的拼接(concatenation)中,每个事物(不论它是数字还是字符串)都会被转换成一个字符串。

3.3 处理事件

 

####################
# 可复用性
####################

 

Code:
<mx:Script source="MyCode.as" />

<--End-->

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值