0

Flash Builderには、B.mxmlを含むA.mxmlという2つのカスタムコンポーネントがあります。Bにはテキスト入力があり、テキストが変更されるたびに、Aで「save()」関数を呼び出したいと思います。

Bの関連コードは次のとおりです。

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

...

<s:TextInput text="@{value}" valueCommit="{dispatchEvent(new Event(Event.CHANGE))}"/>

valueCommit="{}"コードをtraceステートメントに置き換えて、期待どおりに機能していることを確認できます。

Aの関連コードは次のとおりです。

<widgets:B customChange="{save()}"/>

ただしsave()、呼び出されることはありません。

イベントがAに到達しないのはなぜですか?

4

1 に答える 1

2

クラスのメタデータ(B.mxml)は、タイプ/名前が「customChange」であるイベントをディスパッチすることを示しています。

[Event(name="customChange", type="flash.events.Event")]

ただし、コンポーネントはディスパッチしていますEvent.CHANGE。このイベントのタイプ/名前は単に「変更」です。

2つのオプションがあります。

  • ディスパッチしているのと同じイベントタイプ/名前を使用するようにメタデータを変更します。

    [Event(name = "change"、type = "flash.events.Event")]

  • 独自のイベントクラスを作成してディスパッチしてから、メタデータを変更して、カスタムイベントクラスがB.mxmlによってディスパッチされるように指定します。

于 2012-07-27T19:14:36.500 に答える