`
strugglesMen
  • 浏览: 111018 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

ActionScript3学习笔记1-创建简单的 ActionScript 3.0 类

阅读更多

创建并使用自己的 ActionScript 类时需要执行的步骤:

创建类文件

ActionScript 3.0 类编写为文本文档, 独立于使用它的 Flash FLA 或 Flex MXML 文件。类文件需要与类同名, 扩展名为 .as。类文件应包含在与类的包结构匹配的文件夹层级中。在此例中, 我们要创建 Greeter 类, 使其保存在名为 Greeter.as 的文件中。包含包的完整类名称为“com.example.quickstart.Greeter” (Greeter 类包含在“com.example.quickstart”包中), 因此, Greeter.as 文件必须保存在类似于“/com/example/quickstart/”的文件夹结构中。“com”文件夹可以包含在应用程序的根文件夹中, 也可以包含在作为应用程序的 ActionScript 类路径一部分的文件夹中。

为 Greeter 类创建类文件:

  1. 在 ActionScript 的特有程序 (例如 Flex Builder 或 Flash) 、通用编程工具 (例如 Dreamweaver) 或可操作纯文本文档的任何程序中打开新的文本文档。
  2. 将文件保存为“Greeter.as”, 保存在与“/com/example/quickstart/”匹配的文件夹结构中 (其中, “com”文件夹为应用程序的根文件夹)。

创建类和包声明

使用 class 声明定义类的名称。一个类必须指定为“公用”, 其他代码才能创建该类的实例 (基本上, 除几种特别情况外, 所有 ActionScript 3.0 类都必须为公用类)。完整的声明为 public class ClassName。该声明后接一对花括号, 其中包含类的内容。

反过来, class 声明必须包含在 package 声明中, 指示从中找到类的包的名称。语法与 class 声明语法相似: 文字 package 后接包名称, 然后是一对花括号, 其中包含包的内容 (一个 class 声明加上需要的任何 import 声明)。

将 class 和 package 声明添加到 Greeter 类中:

  • 在您的 ActionScript 文件中, 输入以下代码:

    
        
    package com.example.quickstart {     public class Greeter     {     // 类内容 (方法和属性) 将显示在此处     } }

    此代码包含package 声明 (package com.example.quickstart) 及其花括号组, 其中包含 class 声明 (public class Greeter) 及其花括号组。

将属性添加到类

可以使用 var 声明在类正文中定义类的属性。语法类似于用于声明任何变量的语法, 不同之处在于您添加 public 修饰语 (与其在 class 声明中的使用方法一样)。

在 Greeter 类中定义 name 属性:

  • 在 class 声明的左右花括号之间添加一个空白行, 然后输入以下代码:

    public var name:String;

    此行代码定义 name 属性, 其中包含 String 值。您可以选择以指定变量初始值相同的方法指定属性的默认值 (例如 public var name:String = "Fred";)。但是, 在本“快速入门”中, 您将在构造函数方法中设置初始值。

请注意, 您还可以使用修饰语 private 而不是 public 定义专用属性, 类似于:

private var secretValue:Number;

专用属性基本上可由类定义中任何代码访问的变量; 但不可用于类定义之外。

将方法添加到类

您使用与定义函数相同的语法在类中定义方法, 只是增加了访问修饰语 (例如 public 或 private)。方法定义由以下元素构成:

  • 访问修饰语 (通常是 public 或 private)
  • 单词 function
  • 函数的名称
  • 左右括号, 两者之间包含方法接受的所有参数的定义
  • 冒号, 后接方法所返回值的数据类型 (如果方法不返回值, 则为 void)
  • 左右花括号, 其中包含方法执行的声明。

创建不接受任何参数并返回字符串值的 sayHello() 方法:

  • 在 class 声明的左右花括号之间输入以下代码行:

     public function sayHello():String
         {
            var result:String; if (name != null && name.length > 0)
            {
                 result = "Hello there, " + name + ".";
            }
            else
            {
                 result = "Hello there, anonymous.";
            }
            return result;
         }

构造函数方法是一种特别的方法, 作为创建类实例过程的一部分被调用。可以使用构造函数指定属性的初始值或执行其他设置明细步骤。作为构造函数特别性质的一部分, 当您定义构造函数时, 方法的名称必须与类名称精确匹配, 方法必须定义为 public, 而且不能指定返回值的数据类型 (或 void)。

为 Greeter 类创建构造函数方法:

  • 在类声明的左右花括号之间输入以下代码行:

    public function Greeter(initialName:String = "")
        {
        name = initialName;
        }

    此代码定义可选择接受单个 String 参数的构造函数。如果值通过该参数, 则值指派给名称属性。否则, 名称属性设置为 "" (空字符串), 因为这是该方法参数的默认值。

    如果在类中不定义构造函数方法 (例如, 如果无需执行任何设置操作), 则编译器将自动为您的类创建空构造函数 (无参数、无声明)。

添加其他类元素

您可以定义其他几个类元素。创建这些元素的过程比创建方法和属性涉及更多内容, 因而在本“快速入门”中详细介绍:

  • 存取程序是方法与属性之间的一种特殊交叉。当您编写定义类的代码时, 以类似于方法的方式编写存取程序, 使您能够执行多个操作 (而不仅仅是读取或指派一个值, 这些是定义属性时可进行的所有操作)。但是, 当您创建类的实例时, 以类似于属性的方式对待存取程序 - 仅使用名称读取或指派值。有关更多信息, 请参见《Programming ActionScript 3.0》中的“Get and set accessor methods*”。
  • ActionScript 中事件的定义不使用特定语法。相反, 通过 EventDispatcher 类的功能定义类中的事件, 这些功能用于跟踪事件侦听器并向其通知事件。有关在您自己的类中创建事件的更多信息, 请参见《Programming ActionScript 3.0》中的“Handling events*”。

在应用程序中使用自己的类

您可以像任何其他 ActionScript 类中一样在您自己的类中创建和使用实例。首先, 您必须使用 import 声明以及类的包和名称, 以告诉编译器在何处查找类。对于 Greeter 类, import 声明类似于:

import com.example.quickstart.Greeter;

当您添加 import 声明后, 可以像任何其他类一样使用您的类。例如, 可以声明数据类型就是您的类的变量, 以及创建用于存储变量的类的实例:

var michaelGreeter:Greeter = new Greeter("Michael");

您还可以将值指派给实例的属性并调用其方法:

michaelGreeter.name = "Mike"
trace(michaelGreeter.sayHello());

示例

以下示例创建 Greater 类的一个实例, 将 name 属性设置为“Steve”, 然后调用 sayHello() 方法并将产生的问候语写入屏幕上的文本字段 (Flash) 或文本组件 (Flex)。

此示例由两部分构成: Greeter.as 文件中的 Greeter 类 (在本“快速入门”中已构建的文件) 和创建和使用 Greeter 类的实例的应用程序文件 (Flash FLA 或 Flex MXML 文件)。以下代码片断显示 Greeter 类的完整版本。关于创建示例应用程序文件的 Flash 和 Flex 版本的说明如下:

package com.example.quickstart
{
   public class Greeter
   {
      public function Greeter(initialName:String = "")
      {
name = initialName;
      }
      public var name:String;
      public function sayHello():String
      {
         var result:String;
         if (name != null && name.length > 0)
         {
result = "Hello there, " + name + ".";
         }
         else
         {
result = "Hello there, anonymous.";
         }
         return result;
     }
   }
}

在 Flash CS3 Professional 中创建此示例:

  1. 创建一个新的 Flash 文档。
  2. 使用“文本”工具在舞台上创建动态文本字段。给其指派实例名称 output
  3. 在选定帧 1 上的关键帧后, 打开“动作面板”并输入以下代码。

    import com.example.quickstart.Greeter;
        // 创建初始名称为“Steve”的 Greeter 实例
        var myGreeter:Greeter = new Greeter("Steve");
        // Steve, 您好
        output.text = myGreeter.sayHello();
        // 将光标移动到下一行
        output.text += "\n";
        // 将 Greeter 实例名称设置为“Harold”
        myGreeter.name = "Harold";
        // Harold, 您好
        output.text += myGreeter.sayHello();
  4. 从主菜单中, 选择“控制”>“测试影片”可以查看结果。

文章来自:http://www.adobe.com/cn/devnet/flash/quickstart/creating_class_as3/#properties

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics