ActionScript的setter/getter

getter 和 setter 方法的语法如下所示:

    * getter 方法不能有任何参数,始终返回一个值。
    * setter 方法始终带一个参数,从不返回任何值。

类通常会定义 getter 方法和 setter 方法来分别提供对给定属性的读访问和写访问。例如,假设某个类包含一个名为 userName 的属性:

private var userName:String;

该类不允许其实例直接访问这个属性(例如 user.userName = "Buster"),而改为提供两个方法 getUserName 和 setUserName,其实现如下一个示例所示。
使用 getter 和 setter 方法:

   1. 选择"文件">"新建",再选择"ActionScript 文件",然后单击"确定"。
   2. 在"脚本"窗口中键入以下代码:

      class Login {
          private var __username:String;
          public function Login(username:String) {
              this.__username = username;
          }
          public function getUserName():String {
              return this.__username;
          }
          public function setUserName(value:String):Void {
              this.__username = value;
          }
      }

   3. 将 ActionScript 文档保存为 Login.as。

      您可以看到,getUserName() 返回 userName 的当前值,而 setUserName() 将 userName 的值设置为传递给该方法的字符串参数。
   4. 选择"文件">"新建",然后选择"Flash 文档",以创建一个新的 FLA,将其保存到与 Login.as 相同的目录下,文件名为 login_test.fla。
   5. 将下面的 ActionScript 添加到主时间轴中的第 1 帧:

      var user:Login = new Login("RickyM");

      // 调用 getUserName() 方法
      var userName:String = user.getUserName();
      trace(userName); // RickyM

      // 调用 setUserName() 方法
      user.setUserName("EnriqueI");
      trace(user.getUserName()); // EnriqueI

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

      Flash 会将以下信息显示在"输出"面板中:

      RickyM
      EnriqueI

但是,如果要使用更简明的语法,可以使用隐式 getter 和 setter 方法。利用隐式 getter 和 setter 方法能够以直接访问的方式访问类属性,同时还可以保持良好的面向对象编程惯例。

若要定义这些方法,应使用 get 和 set 方法属性。首先应创建用于获取或设置属性值的方法,然后在方法名前面加上 get 或 set 关键字,如下一个示例所示。

注意




隐式 getter 和 setter 方法是对 ActionScript 1.0 中 Object.addProperty() 方法的句法简化。
使用隐式 getter 和 setter 方法:

   1. 选择"文件">"新建",再选择"ActionScript 文件",然后单击"确定"。
   2. 在"脚本"窗口中键入以下代码:

      class Login2 {
          private var __username:String;
          public function Login2(username:String) {
              this.__username = username;
          }
          public function get userName():String {
              return this.__username;
          }
          public function set userName(value:String):Void {
              this.__username = value;
          }
      }

   3. 将 ActionScript 文档保存为 Login2.as。

      切记,getter 方法不带任何参数。而 setter 方法必须正好有一个必要参数。setter 方法与同一作用域内的 getter 方法可以具有相同的名称。但 getter 和 setter 方法不能与其它属性同名。例如,在上面的示例代码中,您定义了名为 userName 的 getter 和 setter 方法;在此情况下,在同一个类中就不能再有名称也为 userName 的属性了。
   4. 选择"文件">"新建",然后选择"Flash 文档",以创建一个新的 FLA,将其保存到与 Login2.as 相同的目录下,文件名为 login2_test.fla。
   5. 将下面的 ActionScript 添加到主时间轴中的第 1 帧:

      var user:Login2 = new Login2("RickyM");

      // 调用"获取"方法
      var userNameStr:String = user.userName;
      trace(userNameStr); // RickyM

      // 调用"设置"方法
      user.userName = "EnriqueI";
      trace(user.userName); // EnriqueI

      与普通方法不同,调用 getter 和 setter 方法时,方法名后面不带任何括号或参量。调用 getter 和 setter 方法与调用同名属性类似。
   6. 保存 Flash 文档,然后选择"控制">"测试影片"对文件进行测试。

      Flash 会将以下信息显示在"输出"面板中:

      RickyM
      EnriqueI

你可能感兴趣的:(编程,脚本,Flash,actionscript)