Eu estou tentando escrever uma função em um MovieClip e chamá-lo do clipe raiz. O que funciona bem no ActionScript 3 não parece estar funcionando corretamente no ActionScript 2.
Quadro 1 do _root
MovieClip:
var newMovieClip:MovieClip = _root.attachMovie("Notification", id, 0);
newMovieClip.SetNotificationText("Test text");
Quadro 1 do Notification
MovieClip:
function SetNotificationText(inputText : String){
notificationText.text = inputText;
}
O resultado é que o MovieClip é criado, mas o texto não é alterado.
Estou fazendo isso errado?
Respostas:
2 para resposta № 1Para adicionar funções a um MovieClip no AS2, você precisa usar um destes métodos:
Adicione o método ao protótipo do 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");
Faça o MovieClip e o argumento da função:
function SetNotificationText(mc:MovieClip, inputText:String):Void { mc.notificationText.text = inputText; } SetNotificationText(newMovieClip, "Test text");
Adicione o método diretamente ao recém-criado MovieClip:
var newMovieClip:MovieClip = _root.attachMovie("Notification", id, 0); newMovieClip.SetNotificationText(inputText:String):Void { notificationText.text = inputText; } newMovieClip.SetNotificationText("Test text");
A opção 2 é melhor no geral - é a mais limpa eevita a sobrecarga de criar uma nova função para cada novo MovieClip. Também evita mexer com o protótipo, que na melhor das hipóteses deve ser usado para adicionar métodos genéricos, como um removeItem()
método em Array
.