2008-09-11 20 views
0

Je tente d'attacher une instance de composant UIScrollbar à un champ de texte dynamique à l'intérieur d'une instance d'une classe en cours de chargement après le chargement d'un fichier XML. Le composant de barre de défilement est correctement attaché, car la taille du curseur varie en fonction de la quantité de contenu dans le champ de texte, cependant, il ne défilera pas.Problème lors du défilement d'un composant UIScrollBar dans une classe

Voici le code:

function xmlLoaded(evt:Event):void 
{ 
    //do some stuff 

    for(var i:int = 0; i < numProfiles; i++) 
    { 
     var thisProfile:profile = new profile(); 

     thisProfile.alpha = 0; 
     thisProfile.x = 0; 
     thisProfile.y = 0; 
     thisProfile.name = "profile" + i; 

     profilecontainer.addChild(thisProfile); 

     thisProfile.profiletextholder.profilename.htmlText = profiles[i].attribute("name"); 
     thisProfile.profiletextholder.profiletext.htmlText = profiles[i].profiletext; 

     //add scroll bar 
     var vScrollBar:UIScrollBar = new UIScrollBar(); 
     vScrollBar.direction = ScrollBarDirection.VERTICAL; 
     vScrollBar.move(thisProfile.profiletextholder.profiletext.x + thisProfile.profiletextholder.profiletext.width, thisProfile.profiletextholder.profiletext.y); 
     vScrollBar.height = thisProfile.profiletextholder.profiletext.height; 
     vScrollBar.scrollTarget = thisProfile.profiletextholder.profiletext; 
     vScrollBar.name = "scrollbar"; 
     vScrollBar.update(); 
     vScrollBar.visible = (thisProfile.profiletextholder.profiletext.maxScrollV > 1); 

     thisProfile.profiletextholder.addChild(vScrollBar); 

     //do some more stuff 
    } 
} 

J'ai aussi essayé avec un composant UIScrollBar dans le MovieClip/classe elle-même, et il ne fonctionne toujours pas. Des idées?

Répondre

0

Avez-vous essayé de placer la barre de défilement de l'interface utilisateur sur la scène, en la liant au champ de texte au moment de la conception, puis en appelant update() pendant l'événement chargé?

J'ai eu quelques intéressantes expériences dans le passé avec la création dynamique UIScrollbars à l'exécution.

0

Dans votre premier exemple avez-vous essayé de mettre la déclaration vScrollBar.update(); après le addChild(vScollbar); ?

2

Vous pouvez essayer d'ajouter la barre de défilement une fois que votre textfield est initialisé à partir d'une fonction distincte semblable à ceci:

private function assignScrollBar(tf:TextField, sb:UIScrollBar):void { 
    trace("assigning scrollbar"); 
    sb.move(tf.x + tf.width, tf.y); 
    sb.setSize(15, tf.height); 
    sb.direction = ScrollBarDirection.VERTICAL; 
    sb.scrollTarget = tf; 
    addChild(sb); 
    sb.update();   
} 

Voilà comment je fais actuellement il.