flex, wie zu aktualisieren bereits erstellte anzeigen
Wie kann ich die Ansicht aktualisieren, nachdem ein bestimmtes Ereignis?
Ich habe eine view mit mehreren Gruppen. Ich möchte zeigen oder ausblenden einiger Gruppen.
onCreationComplete() oder die Methode initialize() funktioniert nur am Anfang der Ansicht Schöpfung.
- Kannst du mehr Kontext? Ich denke, Sie versuchen zu zwingen, Neuzeichnen, wenn es möglicherweise nicht erforderlich sein.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen
invalidateDisplayList()
auf der AnsichtLassen Sie mich wissen, wenn das nicht den trick tun, und wir werden versuchen, einige andere tricks.
Ich persönlich glaube nicht, wie die Antwort, Sie sagt zu call-invalidateDisplayList (sorry, nichts für ungut Nate nichts persönliches). Ich glaube, es ist zu vage und nicht erklären, was dies tut unter der Haube und außerdem sollte man nicht direkt aufrufen, in Fällen wie dem einer erklärt, in der OPs-Frage. Sie können einfach erstellen Sie booleans sind bindbar, für jede der Gruppen, die Sie möchten, um zu zeigen/verbergen, dann im event-handler-sets diese boolsche Variablen auf den entsprechenden Wert und wenn Sie gebunden sind sichtbar und auch in den layout-Eigenschaften der Container, dieser Container wird intern nennen die invalidateDisplayList nach dem Aufruf gesetzt, sichtbar und damit commitProperties.
Dies ist im Grunde, was passiert unter der Haube, wie ich Sie verstehe: Die Art, wie das funktioniert, Werte sind nicht verpflichtet oder benutzt, um die Anzeige zu aktualisieren, bis der nächste frame so nicht verzetteln dabei unnötige layout-Berechnungen. So aktualisieren Sie die bindbare Eigenschaft, die ein Ereignis auslöst, die Trigger eine Benachrichtigung in den Hörer (in diesem Fall eine Funktion, die setzt die Eigenschaft auf Ihrem control), das wiederum geht entlang der Wert der Kontrolle, die setzt ein internes flag zum aktualisieren der Eigenschaft und ruft invalidateProperties. Wann trifft es den nächsten frame neu zeichnen, sieht es, dass die Eigenschaften Flagge schmutzig ist (true) und ruft dann commitProperties, dieses berechnet/legt die entsprechenden Werte (evtl. auch ungültig, dann "fixieren" die Größe mit invalidateSize() und Messen()) und ruft die invalidateDisplayList, dann im gleichen Rahmen, es sieht, dass die display-Liste-flag schmutzig ist, so ruft es updateDisplayList, hier verwendet er die Werte der Eigenschaften, die zu zeichnen angemessen.
Sollten Sie auch in der Lage sein, dies zu erreichen mit Staaten, die hinzufügen oder entfernen von Kindern aus der angezeigten Liste basiert auf einer Reihe von "Aktionen" für jedes Bundesland.