2010-09-02 3 views
0

J'essaie d'accéder à une entrée de texte que j'ai déjà placée sur la scène (à l'intérieur d'un clip) mais sans succès.Comment accéder au champ de texte dynamique sur scène à partir de la classe de document

J'ai défini un nom d'instance pour ce champ de texte dynamique qui est currentUserCount

J'ai quelque chose comme ça mis en place dans le document fichier classe actionscript:

package { 

    import flash.events.Event; 
    import flash.net.URLLoader; 
    import flash.net.URLRequest; 
    import flash.display.Sprite; 
    import flash.display.DisplayObject; 
    import flash.display.MovieClip; 
    import flash.display.Stage; 
    import flash.text.TextField; 
    import flash.text.TextFieldAutoSize; 
    import flash.text.TextFormat; 

    public class myProject extends Sprite { 

     public function myProject() { 
      // Trying stuff like 
      trace(currentUserCount); 
      trace(movieClipName.currentUserCount); 
      trace(root.currentUserCount); 
     } 
    } 
} 

Qu'est-ce que je manque ?

Quand je lance ce je reçois:

1120: Access of undefined property currentUserCount. 
1120: Access of undefined property movieClipName. 
1119: Access of possibly undefined property movieClipName through a reference with static type flash.display:DisplayObject. 
1120: Access of undefined property currentUserCount. 
+1

Avez-vous des erreurs de compilation? Que se passe-t-il lorsque vous tracez movieClipName? –

+0

J'ai ajouté la sortie du compilateur – arnorhs

+0

Il est difficile d'obtenir une bonne idée sans voir le .fla, mais je suppose que le movieclip n'a pas de nom d'instance. –

Répondre

1

Si tous les MovieClips sur la scène avait le même clip imbriqué à l'intérieur de celui-ci, vous pourrait aussi simplement référencer les clips internes comme suit:

for (var i=0; i<stage.numChildren; i++){ 
    var mc = stage.getChildAt(i) 
    mc.subClip.play() 
} 
0

Assurez-vous que le MovieClip et TextField ont des noms d'instance dans votre fichier fla.

// MovieClip instance name: mc; 
// Textfield instance name: tf; 

Ensuite, dans votre classe de document:

package { 

    import flash.events.Event; 
    import flash.net.URLLoader; 
    import flash.net.URLRequest; 
    import flash.display.Sprite; 
    import flash.display.DisplayObject; 
    import flash.display.MovieClip; 
    import flash.display.Stage; 
    import flash.text.TextField; 
    import flash.text.TextFieldAutoSize; 
    import flash.text.TextFormat; 

    public class myProject extends Sprite { 

     public function myProject() { 
      mc.tf.text = "Text you wanna see"; 
      trace(mc.tf); // [Object TextField] 
     } 
    } 
} 
0

Mon problème était que je référence à un clip dans un clip vidéo et je ne savais pas que je devais créer un nom d'instance pour chacun et travailler mon code dans chacun d'eux. Je pensais que les noms d'instance faisaient partie d'un espace de noms global.

Alors que je faisais quelque chose comme:

myMovieClip.play(); 

quand j'aurait dû faire:

mainMovieClip.subMovieClip.myMovieClip.play(); 
Questions connexes