2009-07-15 29 views
1

Ich habe einige benutzerdefinierte Komponenten, die von UIComponent abgeleitet. Ich habe die updateDisplayList so überladen, dass sie benutzerdefiniert aussehen. Ich habe einen Layouter erstellt, der diese benutzerdefinierten Komponenten erstellt, aber um sie korrekt zu platzieren, muss ich die Breite, Höhe und Breite der benutzerdefinierten Komponenten kennen. Sie werden dynamisch erstellt. Nachdem alle von ihnen erstellt (creationCompleted Ereignis für jeden gefeuert), ich versuche, sie zu legen, aber Breite/Höhe Eigenschaft ist immer noch 0 Ich habe auch versucht, sie auf eine Leinwand zu schreiben, vor dem Layout-Prozess.get Breite dynamisch erstellte benutzerdefinierte UIComponent

Also meine Frage ist, wie benutzerdefinierte UIComponent zu erstellen, die dynamisch platziert und erhalten die Breite und Höhe der es wissen.

dank


edit:

Mit der Verwendung des mx_internal Namespace I Breite und Höhe (unter Verwendung der internen $ width und $ height Felder) gesetzt, und es sieht aus wie es funktioniert . Aber nicht so sauber/gute Lösung.

Antwort

1

Wenn Sie von UIComponent sind vererben, anstatt von einer ihrer Unterklassen, werden Sie wahrscheinlich sicherstellen möchten Sie Durchführung der Maßnahme() -Methode, unter anderem. Überprüfen Sie die Flex-Dokumentation hier für weitere Informationen auf Ihrem eigenen UIComponents Umsetzung - es gibt eine gute Gruppe von Informationen ist hier zu lesen, aber es ist alles Sachen sollten Sie wahrscheinlich wissen, wenn Sie von UIComponent abgeleitet sind direkt:

http://www.adobe.com/livedocs/flex/3/html/help.html?content=ascomponents_advanced_3.html

Hoffe, es hilft! Sie könnten auch versuchen, einen kleinen Code zu posten, nur damit wir etwas Spezielleres machen können. Aber die Chancen stehen gut, dass Sie nichts implementieren, was Sie sein sollten, um diese Werte zu erhalten. (Und Ihr Instinkt ist richtig - Sie sollten sich nicht in mx_internal vertiefen müssen, um zu bekommen, was Sie brauchen.)

+0

Kann auch einen Unterschied machen, wenn Sie die benutzerdefinierten Komponenten hinzufügen. Werden sie in der createChildren-Methode oder in der updateDisplayList-Methode oder in MXML hinzugefügt? Aber ich vermute, das Problem ist, dass es keinen "Maß" -Schritt bei den Kindern gibt. – Glenn

0

Vielleicht funktioniert das?

component.getExplicitOrMeasuredWidth() 
component.getExplicitOrMeasuredHeight() 
+0

Dies gibt die explizit eingestellte oder gemessene Breite zurück, aber beide sind Null. Nur die Felder $ width/$ height enthalten nach der Erstellung und Zeichnung nützliche Informationen. Kann ich diese Felder irgendwie verwenden oder die Komponente zwingen, ihre Werte in width/height/measuredWidth .. fields zu schreiben? – spupek

+0

Mit der Verwendung des mx_internal Namespace I Breite und Höhe einstellen, und es sieht aus wie es funktioniert. Aber nicht so sauber/gute Lösung. – spupek

Verwandte Themen