2010-05-12 9 views
6

Die Funken Panel-Komponente kann zum Beispiel wie diese Datei Layout der content, controlBarGroup und titleDisplay wird GriffWie kann ich benutzerdefinierte 'contentGroups' in einer benutzerdefinierten Flex 4-Komponente definieren?

<Panel title="Skinny"> 
    <child components ... /> 
    <controlBarGroup> 
    <child control bar components ... /> 
    </controlBarGroup> 

</Panel> 

Und seine Haut geschrieben werden. Beachten Sie jedoch, dass die contentGroup nicht im obigen Code angezeigt wird und dass die controlBarGroup untergeordnete mxml-Komponenten akzeptiert.

Jetzt sagen, ich möchte eine benutzerdefinierte Komponente erstellen, die verschiedene erforderliche und nicht erforderliche Skinparts definiert, wie zum Beispiel "headerGroup", "navigationGroup" und "accountPreferencesGroup". Ich mag diese benutzerdefinierte Komponente schreiben wie diese

<MyComp> 
<headerGroup> 
    <child components .../> 
</headerGroup> 
<navigationGroup> 
    <child components .../> 
</navigationGroup> 
<accountPreferencesGroup> 
    <child components .../> 
</accountPreferencesGroup> 
</MyComp> 

Die Motivation dabei ist, dass ich jetzt ein paar verschiedene Skin-Dateien erstellen kann das Aussehen und das Layout dieser Untergruppen zu ändern. Beim Lesen der Quelle des Spark-Panels gibt es einige Aufrufe innerhalb des mx_internal-Namespace, z. B. getMXMLContent(), eine Methode der Spark-Gruppenkomponente, auf die ich jedoch keinen Zugriff habe.

Macht die obige Beschreibung Sinn? Wie kann ich benutzerdefinierte 'contentGroups' in meiner benutzerdefinierten Flex4-Komponente erstellen, die verschachtelte mxml-Kindkomponenten verwenden können? Sollte ich das anders angehen?

+0

Ich habe gerade auf den folgenden Link, die ganz in der Nähe ist, was zu erreichen Ich versuche. http://forums.adobe.com/thread/575569?tstart=1 – swidnikk

Antwort

0

So ... nachdem die Dinge durch ein bisschen mehr ... Arbeit fand ich, dass es seine möglich durch mx_internal Namespace zu verwenden, den folgenden

Import mx.core.mx_internal; Verwenden Sie den Namespace mx_internal;

Adobe verwendet diesen Namespace, um Methoden und Eigenschaften zu markieren, die sich in der Zukunft ändern können, sodass sie diesen Namespace zum Verbergen von Objekten verwenden.

Wenn Sie dem Code in Panel.as folgen, können Sie diese Arbeit erhalten und Ihre eigenen benutzerdefinierten Inhaltsbereiche definieren.