/ / Actionscript 2 Правильний спосіб визначення функції на MovieClip - actionscript, actionscript-2, movieclip

ActionScript 2 Правильний спосіб визначення функції на MovieClip - actionscript, actionscript-2, movieclip

Я намагаюся написати функцію на MovieClip і викликати його з кореневого кліпу. Що добре працює в ActionScript 3, здається, не працює належним чином в ActionScript 2.

Рамка 1 з _root MovieClip:

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

Рамка 1 з Notification MovieClip:

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

Результат полягає в тому, що MovieClip створено, але текст не змінюється.

Я роблю це неправильно?

Відповіді:

2 для відповіді № 1

Щоб додати функції до MovieClip в AS2, потрібно скористатись одним із цих методів:

  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. Це також дозволяє уникнути проблем з прототипом, який у кращому випадку повинен використовуватися для додавання загальних методів, таких як a removeItem() метод на Array.