Frage

Dies ist vergleichbar mit meinem vorherigen Posting. Aber dieses Mal möchte ich eine Funktion aufrufen, die auf der Haupt-mxml Seite vorhanden ist.

Das ist mein Haupt mxml Seite:

main.mxml

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:ns1="*">
    <mx:Script>
        <![CDATA[   
        public function changeText(currentText:String):void{

            switch (currentText){
                case "changeText":
                    lblOne.text = "More Text";                  
            }
        }
            ]]>
    </mx:Script>

    <mx:HBox x="137.5" y="10" width="100%" height="100%">
        <ns1:menu id="buttons"> </ns1:menu>
    </mx:HBox>
    <mx:Canvas x="137" y="88" width="408.5" height="200">
        <mx:HBox x="0" y="10" width="388.5" height="190">
            <mx:Panel width="388" height="179" layout="absolute">
                <mx:Label x="10" y="10" text="Some Text" visible="{buttons.showLabel}" id="lblOne"/>
            </mx:Panel>
        </mx:HBox>
    </mx:Canvas>
</mx:Application> 

Hier ist meine enthalten Seite:

menu.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300">
    <mx:Script>
        <![CDATA[
            [Bindable] public var showLabel:Boolean = true;
        ]]>
    </mx:Script>
    <mx:MenuBar width="380" height="58"></mx:MenuBar>
    <mx:Button x="10" y="10" width="80" label="Show" id="btnOne" click="this.showLabel=true;" />
    <mx:Button x="94" y="10" width="80" label="Hide" id="btnTwo" click="this.showLabel=false;"/>
    <mx:Button x="181" y="10" width="80" label="Run Function" id="btnThree" click="{changeText('changeText')}"/>
</mx:Canvas>

Wie rufe ich die changeText Funktion von der Taste auf menu.mxml?

War es hilfreich?

Lösung

Fügen Sie dieses Menü:

  <mx:Metadata>
         [Event(name="buttonClicked", type="flash.events.Event")]
    </mx:Metadata>

 <mx:Button x="10" y="10" width="80" label="Show" id="btnOne" click="this.showLabel=true;dispatchEvent(new Event("buttonClicked"));"/>

Ändern Haupt an:

  <ns1:menu id="buttons" buttonClicked="changeText("Your Text");">

Ich kann nicht sagen, wo aktuelle Text herkommt, aber wenn es aus dem Menü ist müssen Sie unter Umständen Ihr eigenes flex Ereignis bauen oder eine gemeinsame Variable für die beiden Teile auf Zugang zu erstellen. Die erste ist in der Regel bevorzugt.

P. S. Die Veranstaltung Metadaten Sache könnte auch durch Hinzufügen der Ereignis-Listener erreicht werden, wenn die Erstellung der Anwendung abgeschlossen ist. Sie würden zum Haupt hinzufügen:

buttons.addEventListener("buttonClicked",changeText("Your Text"));

Andere Tipps

es ein einfacherer Weg, nur parent verwenden.

Diese Änderung:

<mx:Button x="181" y="10" width="80" label="Run Function" id="btnThree" click="{changeText('changeText')}"/>

zu:

<mx:Button x="181" y="10" width="80" label="Run Function" id="btnThree" click="{parentDocument*.changeText('changeText')}"/>**
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top