2011-11-04 6 views
0

Je crée un fichier swc par Flash CS5 contient un composant d'interface comme TextInput, Label. Et puis je l'utilise dans un programme flexible.Comment utiliser le répéteur pour les composants à l'intérieur de swc

Mais je rencontre le problème quand je veux utiliser le répéteur flexible pour ce composant. Voici un composant que j'ai défini dans un fichier swc en utilisant Flash CS.

package { 
    import fl.controls.TextInput; 
    ...... 

    public dynamic class MyWindow extends UIMovieClip { 
     public var txt1 : TextInput; 
     ...... 
     } 
    } 
} 

Puis-je utiliser dans mon programme flex comme ceci:

<local:MyWindow id="myWindow"/> 
<fx:Script> 
    <![CDATA[ 
     ...... 
     private function Init() : void { 
      myWindow.txt1.text = "myText"; 
     } 
     ...... 
    ]]> 
</fx:Script> 

il fonctionne bien. Mais comment utiliser txt1 directement dans mxml? comme ceci:

<local:MyWindow id="myWindow" txt1.text="myText"/> 

Je sais que cela ne fonctionne pas, mais je veux utiliser répéteur pour créer une MyWindow similaire, il doit lier le fournisseur de données. J'ai écrit le code flexible comme ceci:

<mx:VBox> 
    <mx:Repeater x="10" y="10" id="multiWindow"> 
     <local:MyWindow txt1.text="{multiWindow.currentItem}"/> 
    </mx:Repeater> 
</mx:VBox> 

Mais cela ne peut pas fonctionner.

Est-ce que quelqu'un sait comment le faire fonctionner? Merci.

============================================== ===================================

code de mise à jour, Multiwindow code complet est:

package { 
import fl.controls.TextInput; 

import mx.flash.UIMovieClip; 

import flash.display.DisplayObject; 
import flash.events.EventDispatcher; 
import flash.display.Sprite; 
import flash.display.InteractiveObject; 
import flash.display.MovieClip; 
import flash.display.DisplayObjectContainer; 

public dynamic class MyWindow extends UIMovieClip { 
    public var txt1 : TextInput; 
    public var txt2 : TextInput; 
    public var txt3 : TextInput; 
} 
} 

Répondre

1

Tout composant que vous souhaitez utiliser avec un conteneur MX doit implémenter IUIComponent. Je crois que Flash a construit dans la classe de base que vous pouvez étendre pour une utilisation avec Flex, mais vous pouvez aussi faire quelque chose comme ceci:

<mx:VBox> 
    <mx:Repeater x="10" y="10" id="multiWindow"> 
     <mx:UIComponent> 
      <local:MyWindow txt1.text="{multiWindow.currentItem}"/> 
     </mx:UIComponent> 
    </mx:Repeater> 
</mx:VBox> 

Notez que si vous ne l'avez pas pensé à la vie des composants Flex cycle et système de mise en page, il pourrait ne pas bien jouer.

+0

Pourriez-vous expliquer plus en détail comment implémenter IUIComponet? Faites-le en Flash ou en Flex? J'ajoute dans mon code flexible comme votre exemple, mais cela ne fonctionne toujours pas. – Wei

+0

Que voulez-vous dire par "ne fonctionne pas"? Et pouvez-vous poster le code pour la classe de document de votre symbole Flash? –

+0

Amy, j'ai mis à jour le code, est-ce que le document de ce symbole Flash est? – Wei

Questions connexes