1

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

影片剪辑的第一帧_root

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

影片剪辑的第一帧Notification

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

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

我做错了吗?

4

1 回答 1

2

要在 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. 制作函数的 MovieClip 和参数:

    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 创建新函数的开销。它还避免了弄乱原型,它充其量应该用于添加泛型方法,removeItem()例如Array.

于 2013-05-20T01:24:39.183 回答