2010-12-29 19 views
0

Verzeihen Sie, ich bin neu in Flash Builder 4 und Actionscript 3 (eigentlich zur Programmierung als Ganzes über einige sehr simple Sachen hinaus). Ich habe eine Reihe von Tutorials gesehen/gelesen und ein Projekt gestartet, aber jetzt scheint es eine Wand zu treffen. Die Antwort ist wahrscheinlich einfach, aber scheint mich zu spielen.Steuern von dynamisch erstellten Containern

Wie kann ich (oder welcher Ansatz sollte ich) visuelle Elemente, zum Beispiel BorderContainer, die ich dynamisch erstellt habe, kontrollieren?

Wie es ist, habe ich eine Anwendung, die einen BorderContainer und ein DataGrid enthält. Zur Laufzeit werden 3 neue BorderContainer (die verschiebbar und skalierbar sind) basierend auf XML-Daten erstellt, die X & Y-Koordinaten sowie Height- und Width-Werte enthalten, und dann zum bereits vorhandenen BorderContainer hinzugefügt. Wie gehe ich vor, um die Eigenschaften dieser untergeordneten BorderContainer anzuzeigen und im DataGrid auf dem neuesten Stand zu bleiben (z. B. wenn sie verschoben/in der Größe geändert werden)?

Meine Absichten in der Zukunft wäre eine benutzerdefinierte Komponente, die eine Zusammenfassung dieser Elemente in einem separaten Bereich (Think Photoshop "Ebenen" Steuerung, aber viel einfacher) anzuzeigen, aber wollte ein besseres Verständnis von dem, was ist geht zuerst.

Alle Eingaben, Dokumentationen, Beispiele usw. werden geschätzt. Nochmals, ich entschuldige mich für was eine unglaublich einfache Lösung sein könnte, oder wenn eine meiner Sprache unklar ist, bin ich neu in diesem^_ ^;

Antwort

1

Ich würde eine ArrayCollection der BorderContainer mit ihren verschiedenen Eigenschaften erstellen (stellen Sie auch sicher, dass Sie addElement auf dem übergeordneten BorderContainer aufrufen).Stellen Sie sicher, dass Ihre ArrayCollection als bindbar deklariert ist, und legen Sie sie als dataProvider für Ihr DataGrid fest. Geben Sie dann die Spalten für Ihr DataGrid basierend auf den Eigenschaften an, die Sie anzeigen möchten (Höhe, Breite usw.). Sobald sich die Eigenschaften der BorderContainer ändern, wird das DataGrid automatisch aktualisiert.

+0

Danke Wade. Ich habe das gemacht, was Sie angegeben haben, und obwohl es mehr Bugs in das DataGrid einführte und ein bisschen mehr Verwirrung darüber aufkommen ließ, wie ich weitermachen möchte, löste es das Problem und gab mir mehr zum Arbeiten. Lass die Lernerfahrung weitergehen! Vielen Dank! – Rejected

0

Unter der Annahme eines reinen AS3-Projekts ist es am besten, ein Wörterbuch Ihrer Objekte zu erstellen.

Angenommen, Sie haben Kennungen für die Komponenten erstellt oder können diese zur Laufzeit erstellen.

var containers:Dictionary = new Dictionary(); 

private function _init():void 
{ 
    //some loop to create objects 
    containers[newObject.name] = newObject; 
} 

Später können Sie es schnell nur durch Zugriff auf den Hash-Index aus dem Behälter Wörterbuch greifen.

nun ein Flex-Projekt unter der Annahme, wir noch ein paar Ansätze haben, können wir annehmen:

  • Display implementiert getChildByName()
  • Gruppe implementiert getElementAt und numElements überlaufen, überprüfen Sie Namen und Rückkehr Wert erwartet.

Ich persönlich noch das Wörterbuch Ansatz bevorzugen ...

Was die Dinge auf dem neuesten Stand zu halten, können Sie sich in Bindung (in der Regel eine Flex-only-Lösung) oder mehr untersuchen in geeigneter Weise die Ereignisse ausgelöst:

  • Event.RESIZE
  • Event.MOVE
  • usw.

In den Handlern aktualisieren Sie einfach Ihre Benutzeroberfläche!

HTH, sonst posten mehr Infos und wir werden sehen, was wir herausfinden können.

+0

Ich ging mit Wade Mueller's Lösung für dieses Problem, da es eine einfache Implementierung einer anderen ArrayCollection war, mit der ich mich schon beschäftigt habe. Ich möchte Ihnen jedoch für die Einführung des Wörterbuchs danken, da ich beabsichtige, in Zukunft damit zu spielen. Vielen Dank! – Rejected

Verwandte Themen