Actionscript 2在MovieClip上定义函数的正确方法

时间:2013-05-20 00:49:29

标签: actionscript actionscript-2 movieclip

我正在尝试在MovieClip上编写一个函数,并从根剪辑中调用它。在ActionScript 3中,什么工作正常似乎无法在ActionScript 2中正常工作。

_root MovieClip的第1帧:

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

Notification MovieClip的第1帧:

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

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

我这样做错了吗?

1 个答案:

答案 0 :(得分: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");
    
  4. 选项2总体上是最好的 - 它是最干净的,并且避免了为每个新MovieClip创建新函数的开销。它还避免了处理原型,最多应该用于添加泛型方法,例如removeItem()上的Array方法。