Я намагаюся написати функцію на 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, потрібно скористатись одним із цих методів:
Додайте метод до прототипу 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");
Зробіть MovieClip і аргумент функції:
function SetNotificationText(mc:MovieClip, inputText:String):Void { mc.notificationText.text = inputText; } SetNotificationText(newMovieClip, "Test text");
Додайте метод безпосередньо до щойно створеного 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
.