我正在尝试在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,但文本没有改变。
我这样做错了吗?
答案 0 :(得分:2)
要将功能添加到AS2中的MovieClip,您需要使用以下方法之一:
将方法添加到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创建新函数的开销。它还避免了处理原型,最多应该用于添加泛型方法,例如removeItem()
上的Array
方法。