2009-05-11 14 views
0

Ich muss mehrere vbox-es in einer für jede Schleife erstellen. Jetzt möchte ich so etwas tun.So erstellen Sie dynamische Variable vbox in Actionscript

formsArray ["vb" + counter] = neue VBox; formsArray ["vb" + Zähler] .visible = true;

hinzufügen Etiketten etc.

kann ich diese Sache zu arbeiten, nicht bekommen. Hat jemand eine Idee, wie man dynamische Variablennamen für meine vbox-es erstellt?

Dank

Antwort

0

Zunächst einmal, ein assoziatives Array zu verwenden, benötigen Sie ein Objekt und nicht ein Array zu verwenden (vielleicht sind Sie schon, dann egal).

können Sie erreichen, was Sie die folgende Art und Weise zu tun:

var vbox:VBox; 
var formsArray:Object = new Object(); 
var counter:int = 0; 

for each(<statement>) 
{ 
    vbox = new VBox(); 
    formsArray[("vb" + counter.toString())] = vbox; 
    counter++; 
} 

Die VBox der sichtbare Eigenschaft ist true standardmäßig, so dass keine Notwendigkeit, explizit festgelegt es.

Antwort auf zusätzliche Frage in den Kommentaren:

Sie brauchen nicht wirklich Verwendung von dynamischen Referenzen machen zu tun, was Sie tun mögen. Am besten erstellen Sie hierfür eine benutzerdefinierte Komponente, indem Sie die VBox-Klasse erweitern, indem Sie eine neue MXML-Klasse mit VBox als Root-Tag erstellen. Etwas in diese Richtung:

<mx:VBox ... > 

    <mx:Button ... click="btnClickHandler()"/> 
    <mx:Script> 
     <![CDATA[ 

      // Toggles visibility of the VBox 
      private function btnClickHandler():void 
      { 
       visible = !visible; 
      } 

     ]]> 
    </mx:Script> 

</mx:VBox> 

Dann können Sie nur so viele dieser benutzerdefinierten VBox instanziieren: es, wie Sie brauchen. Wenn Sie die VBox jedoch unsichtbar machen, wird die enthaltene Schaltfläche ebenfalls unsichtbar, wodurch es schwierig wird, sie erneut anzuklicken. :) Sie möchten das wahrscheinlich ansprechen. Wie auch immer, ich hoffe, das wird Sie in die richtige Richtung weisen.

+0

vielen Dank für Ihre schnelle Antwort, nicht sicher, ob es funktioniert, weil: void {openEdit (formsArray [("vb" +: ich ein btn zum vbox btn.addEventListener (MouseEvent.CLICK, function() hinzufügen counter.toString())]), false); Wenn ich die Taste zum Beispiel drücken möchte, sehe ich den sichtbaren Zustand. So mache ich so etwas wie private Funktion openEditAccount (vb2: VBox): void \t \t { \t \t \t \t Alert.show (vb2.visible.toString()); } Was mache ich falsch? –

+0

Es tut mir leid, aber ich verstehe Ihren Kommentar nicht ganz. Ich nehme an, Sie sind es gewohnt, in JS zu programmieren, je nachdem, wie Sie eine dynamische Event-Handler-Funktion hinzufügen möchten. Dies ist wahrscheinlich nicht der beste Weg für Sie, Dinge zu tun. Kannst du mir bitte erklären, was du vorhast und ein wenig über dein Problem nachdenken? Vielleicht möchten Sie sogar eine neue Frage dafür erstellen. Ihre ursprüngliche Frage sollte vollständig durch die Antwort gelöst werden. – Stiggler

+0

* ich erstelle dynamische vbox-es * jede vbox hat eine taste * wenn du die taste drückst, musst du zu einer funktion (nicht in JS) gehen, die deine vbox sichtbar oder unsichtbar macht * also will ich die funktion geben ein Parameter mit dem vbox-Namen, oder ich weiß nicht, welche Taste gedrückt wird. (Deshalb mache ich das Seltsame mit MouseEvent.CLICK, function(): void {openEdit (formsArray [("vb" + counter.toString())], false Ich hoffe du verstehst mich ... ich bin irgendwie verloren. Mit freundlichen Grüßen, Jaq –

Verwandte Themen