Flex:含まれるコンポーネントから関数を呼び出す
-
03-07-2019 - |
質問
これは以前の投稿に似ています。ただし、今回はメインのmxmlページに存在する関数を呼び出します。
これは私のメインのmxmlページです。
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>
含まれるページは次のとおりです。
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>
menu.mxmlのボタンからchangeText関数を呼び出すにはどうすればよいですか
解決
これをメニューに追加:
<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"));"/>
mainを次のように変更します:
<ns1:menu id="buttons" buttonClicked="changeText("Your Text");">
現在のテキストがどこから来ているのかわかりませんが、メニューから来る場合は、独自のカスタムflexイベントを作成するか、アクセスする2つの部分の共通変数を作成する必要があります。通常、最初のものが優先されます。
PSイベントメタデータは、アプリケーションの作成が完了したときにイベントリスナーを追加することでも実現できます。 mainに追加します:
buttons.addEventListener("buttonClicked",changeText("Your Text"));
他のヒント
より簡単な方法があり、parentDocumentを使用します。
変更:
<mx:Button x="181" y="10" width="80" label="Run Function" id="btnThree" click="{changeText('changeText')}"/>
to:
<mx:Button x="181" y="10" width="80" label="Run Function" id="btnThree" click="{parentDocument*.changeText('changeText')}"/>**
所属していません StackOverflow