【问题标题】:Actionscript 2 Proper way to define function on MovieClipActionscript 2 在 MovieClip 上定义函数的正确方法
【发布时间】:2013-05-14 12:20:03
【问题描述】:

我正在尝试在 MovieClip 上编写一个函数,并从根剪辑中调用它。在 ActionScript 3 中运行良好的功能在 ActionScript 2 中似乎无法正常运行。

_root MovieClip 的第一帧:

var newMovieClip:MovieClip = _root.attachMovie('Notification', id, 0);
newMovieClip.SetNotificationText("Test text");

Notification MovieClip 的第一帧:

function SetNotificationText(inputText : String){
    notificationText.text = inputText;
}

结果是创建了 MovieClip 但文本没有更改。

我做错了吗?

【问题讨论】:

    标签: actionscript actionscript-2 movieclip


    【解决方案1】:

    要在 AS2 中向 MovieClip 添加功能,您需要使用以下方法之一:

    1. 将方法添加到MovieClip的原型中:

      MovieClip.prototype.SetNotificationText = function(inputText:String):Void
      {
          if(this["notificationText"] !== undefined)
          {
              // If we're going to use the prototype, at least do some checks
              // to make sure the caller MovieClip has the text field we expect.
              this.notificationText.text = inputText;
          }
      }
      
      newMovieClip.SetNotificationText("Test text");
      
    2. 制作影片剪辑和函数的参数:

      function SetNotificationText(mc:MovieClip, inputText:String):Void
      {
          mc.notificationText.text = inputText;
      }
      
      SetNotificationText(newMovieClip, "Test text");
      
    3. 将方法直接添加到新创建的MovieClip中:

      var newMovieClip:MovieClip = _root.attachMovie('Notification', id, 0);
      
      newMovieClip.SetNotificationText(inputText:String):Void
      {
          notificationText.text = inputText;
      }
      
      newMovieClip.SetNotificationText("Test text");
      

    选项 2 总体上是最好的 - 它是最简洁的,并且避免了为每个新的 MovieClip 创建新函数的开销。它还避免了弄乱原型,它充其量应该用于添加泛型方法,例如Array 上的removeItem() 方法。

    【讨论】:

      猜你喜欢
      • 2013-07-16
      • 2011-05-13
      • 2022-01-01
      • 2019-12-06
      • 2017-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多