2010-03-04 3 views
2

question facile, que je ne peux pas trouver rapidement une réponse à ligne - il semble que ce serait dans les didacticiels partout - et est probablement ...Réglage TextField.text dynamique d'un MovieClip parent dans ActionScript 3

I avoir un MovieClip qui a un Dynamic TextField: appelons l'instance du champ txtName. Je veux définir le champ de texte à la volée pour txtName, donc j'ajoute un peu d'ActionScript (3!) Qui le fait bien et facilement: txtName.text = "Foo";

Très bien. Maintenant, pourquoi ne fonctionne-t-il pas lorsque j'essaie la même chose à partir d'un parent MovieClip qui contient le MovieClip qui a le texte dynamique? Exemple:

enfant MovieClip avec TextField ActionScript 3 dans l'image n ° 1:

//------ 
function SetText(str:String):void { 
    txtName.text = str; 
} 
//------ 

Parent MovieClip contient le MovieClip ci-dessus (exemple appelé movieChild) a ActionScript 3 dans l'image suivante # 1:

//------ 
movieChild.SetText("Hello Child"); // Doesn't work 
movieChild.txtName.text = "Hello Child"; // Doesn't work 
MovieClip(movieChild).txtName.text = "Blah"; // Doesn't work 

Quelle est la simple chose qui me manque? Je sais que le texte de TextField est défini en le vérifiant avec une trace, mais l'affichage ne change pas réellement.

Prêt pour une réponse embarrassante et humiliante.

Eddie

+0

pouvez-vous essayer: trace (movieChild)? –

+0

cela ne fonctionne-t-il pas (c'est-à-dire ne fait rien du tout), ou est-ce qu'il lance une erreur? – longstaff

Répondre

1

Il pourrait juste être que votre fonction, SetText, n'est pas publique. Stick 'public' avant 'fonction', et essayez à nouveau, devrait fonctionner :)

Peut-être le même problème pour la deuxième ligne où vous essayez de le définir directement; si la déclaration de variable pour votre champ de texte n'est pas publique.

1

Je suis désolé les gens pour la question stupide. Je me suis heurté à un simple problème de dénomination. Il n'y avait pas d'erreur, et toutes les traces que je faisais semblaient exactes, mais rien ne changeait. L'origine du problème est que j'ai décidé de lancer un MovieClip de survol "HotSpot" et j'ai fini par l'appeler comme j'ai fait le MovieClip. Aurait dû le regarder un peu plus près avant de poster.

Je ne sais toujours pas pourquoi, même si cela n'a pas causé d'erreur. En ce qui concerne l'utilisation de "public", cela ne fonctionne-t-il pas uniquement lorsque vous utilisez un fichier Actionscript externe, c'est-à-dire pas des actions directement attachées à un timeLine?

Merci pour l'entrée!

+0

Oui, je pense que c'est vrai en fait. Je ne savais pas si cela faisait une différence quand tout ce que vous avez à faire est sur la ligne du temps, mais j'ai pensé que ça valait le coup. Heureux que vous l'avez réparé de toute façon :) – debu

+0

J'ai aussi couru dans le numéro de nom en double fois. Cela me rend fou qu'un environnement si riche ne peut pas me dire si j'ai plus d'un actif avec un nom en double .... Vous pouvez utiliser la visionneuse de scène/actif dans le panneau Actions ... mais il est TEDIOUS wen des tonnes d'objets sur la scène ... – exoboy

Questions connexes