使用常数

常数是具有固定值(无法改变的值)的属性;换句话说,它们是在整个应用程序中都不发生改变的值。ActionScript 语言包含多个预定义的常数。例如,常数 BACKSPACEENTERSPACETAB 是 Key 类的属性,指代键盘的按键。常数 Key.TAB 总是具有不变的含义:表示键盘上的 Tab 键。在应用程序中比较和使用不发生变化的值时,常数非常用于。

要测试用户是否按下了 Enter,可以使用下面的语句:

var keyListener:Object = new Object();
keyListener.onKeyDown = function() {
    if (Key.getCode() == Key.ENTER) {
        trace("Are you ready to play?");
    }
};
Key.addListener(keyListener);

要使上面的 ActionScript 正常工作,可能必须在创作环境中禁用键盘快捷键。从主菜单中选择"控制">"测试影片",然后,在播放器中预览 SWF 文件的过程中,从 SWF 文件的预览窗口中选择"控制">"禁用快捷键"。

在 Flash 中无法创建您自己的常数值,除非在创建您自己的具有私有成员变量的自定义类时才允许创建您自己的常数值。在 Flash 中无法创建"只读"变量。

变量应为小写字母或混合大小写的字母,但是常数(不会更改的变量)应为大写字母。应使用下划线分隔单词,如下面的 ActionScript 所示:

var BASE_URL:String = "http://www.adobe.com"; // 常数
var MAX_WIDTH:Number = 10;               // 常数

请以大写形式来书写静态常数,并用下划线来分隔单词。不要直接对数字常数进行编码,除非常数为 1、0 或 -1,这些常数可能在 for 循环中用作计数器值。

要引用某些定值的属性,则可使用常数。这可以帮助您查找代码中的打字错误;但如果使用了文本,则可能找不到这些错误。使用常数还可以在单独一个位置上更改值。有关文本的详细信息,请参阅关于文本

例如,下一个示例中的类定义创建了三个常数,遵循 ActionScript 2.0 所用的命名约定。

在应用程序中使用常数:

  1. 选择"文件">"新建",然后选择"ActionScript 文件"创建一个 AS 文件。
  2. 将此新文件命名为 ConstExample.as
  3. 在"脚本"窗口中键入以下代码:
    class ConstExample {
        public static var EXAMPLE_STATIC:String = "Global access";
        public var EXAMPLE_PUBLIC:String = "Public access";
        private var EXAMPLE_PRIVATE:String = "Class access";
    }
    

    EXAMPLE_STATIC 属性是一个静态属性,这意味着该属性应用于整个类,而不是应用于类的一个特定实例。必须使用类的名称(而不是实例的名称)访问类的静态属性。无法通过类实例访问静态属性。

  4. 创建一个新的 Flash 文档,并将它另存为 const.fla
  5. 打开"动作"面板,在时间轴的第 1 帧上键入以下代码:
    trace(ConstExample.EXAMPLE_STATIC); // 输出:Global access
    

    EXAMPLE_STATIC 属性声明为静态时,可以使用此代码访问该属性的值。

  6. 选择"控制">"测试影片"对文档进行测试。

    将在"输出"面板中看到 Global access

  7. 在"动作"面板中,将以下代码键入到在步骤 5 中添加的代码之后。
    trace(ConstExample.EXAMPLE_PUBLIC); // 错误
    trace(ConstExample.EXAMPLE_PRIVATE); // 错误
    
  8. 选择"控制">"测试影片"对文档进行测试。

    EXAMPLE_PUBLIC 和 EXAMPLE_PRIVATE 属性不是静态属性。尝试通过类访问它们的值时,会看到以下错误消息:

    The property being referenced does not have the static attribute.
    

    要访问非静态属性,必须通过该类的实例访问它的值。因为 EXAMPLE_PUBLIC 属性是公有属性,所以可用于该类定义以外的代码。

  9. 在"动作"面板中,删除在步骤 5 和步骤 7 中添加的 trace 语句。
  10. 在"动作"面板中键入以下代码:
    var myExample:ConstExample = new ConstExample();
    trace(myExample.EXAMPLE_PUBLIC); // 输出:Public access
    

    此代码对 myExample 实例进行实例化并访问 EXAMPLE_PUBLIC 属性。

  11. 选择"控制">"测试影片"对文档进行测试。

    将在"输出"面板中看到 Public access

  12. 在"动作"面板中,删除在步骤 10 中添加的 trace 语句。
  13. 在"动作"面板中键入以下代码。
    trace(myExample.EXAMPLE_PRIVATE); // 错误
    

    EXAMPLE_PRIVATE 属性是一个私有属性,因此仅在该类定义中可用。

  14. 选择"控制">"测试影片"对文档进行测试。

    将在"输出"面板中看到 The member is private and cannot be accessed

    有关内置类和创建自定义类的详细信息,请参阅"类"