1

カスタムコンポーネントからmain.mxmlに値を戻すにはどうすればよいですか?ana配列コレクションを返すためにこれを行う必要があります

4

2 に答える 2

7

静的な Application.application.yourPublicMethodName() または .yourPublicPropertyName = n を使用して Application を直接呼び出すことができますが、イベント フレームワークを使用してコンポーネントを疎結合にすることも検討してください。コンポーネントは定義上、イベント ディスパッチャーであるため、コンポーネント内からイベントをディスパッチするだけで、Application クラスでそのイベントをリッスンできます。

MXML では、コンポーネント クラスは次のようになります。

<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300">

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

    <mx:Script>
        <![CDATA[

            public var someValue:int = 0;

            private function buttonClick():void
            {
                someValue = 1;
                dispatchEvent(new Event("buttonClicked"));
            }

        ]]>
    </mx:Script>

    <mx:Button label="Click Me" click="buttonClick()" />

</mx:Canvas>

...そしてアプリケーションの場合、次のように:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:local="*">

    <mx:Script>
        <![CDATA[

            import mx.controls.Alert;

            private function myComponent_buttonClicked(event:Event):void
            {
                Alert.show(event.currentTarget.someValue.toString());
            }

        ]]>
    </mx:Script>

    <local:MyComponent buttonClicked="myComponent_buttonClicked(event)" />

</mx:Application>

コンポーネント クラスの Event メタデータ タグは、コンポーネントが flash.events.Event タイプのイベント (「buttonClicked」) をディスパッチすることをコンパイラに伝えます。これは、それを MyComponent タグのイベントとして公開します。次に、そのイベントのリスナーを接続するだけで、イベントの currentTarget プロパティを介して、コンポーネントのすべての公開データにアクセスできます。

私はあなたのために面白い代替案を提供したいと考えました。それが役に立てば幸い!

于 2009-01-23T16:50:34.383 に答える
0

とった; mx.core.Applicationをインポートするためだけに必要です。

于 2009-01-23T16:18:37.550 に答える