1

AsyncTokenを使用してコンポーネント間のアラートボタンクリックを聞くことはできますか?基本的に、ボタンでアラートを開き、AsyncTokenを返すメソッドが必要です。これにより、そのメソッドを呼び出す他のコンポーネントがボタンのクリックをリッスンできるようになります。

例:

var token:AsyncToken=methodThatOpensAlert();
token.addResponder(new mx.rpc.Responder(buttonClick));

それを行う方法は何ですか?ありがとうございました。

4

1 に答える 1

1

これを実現するためにAsyncTokenを使用できる場合がありますが、ポップアップからディスパッチするカスタムイベントに登録することもできます。これは、はるかにクリーンなメソッドIMOです。本当にあなたは私が考えることができる2つの比較的きれいなオプションを持っています。1ポップアップ内のさまざまなボタンクリックに対して「okClicked」「cancelClicked」などのポップアップディスパッチイベントを作成するか、ポップアップのインスタンスを作成してリスナーを追加してからPopUpManager.addPopUpを呼び出すか、PopUpManager.createPopUpを実行します。返された表示オブジェクト(作成されたポップアップのインスタンス)への参照を保持し、リスナーを追加します。2関数として入力されたポップアップで2つのプロパティを作成し、それらをコールバックとして使用します。

if(okClickedFunction)
    okClickedFunction();

AsyncTokenを使用する必要があると思わせる特定のニーズがある場合はお知らせください。ただし、ドキュメントを確認すると、他のRPCメソッドで動作することを厳密に意図しているように見え、多くのプロパティは読み取り専用です。

編集:

[SomeUtilClass.as]

private static function methodThatOpensAlert():CustomAlert
{
    return PopUpManager.createPopUp(Application.application, CustomAlert) as CustomAlert;
}

[CustomAlert.as]

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

private function button1Clicked_handler(event:MouseEvent):void
{
    dispatchEvent(new Event("button1Clicked", true));
}
private function button2Clicked_handler(event:MouseEvent):void
{
    dispatchEvent(new Event("button2Clicked", true));
}

[ThingThatUsesAlert]

var ca:CustomAlert = SomeUtilClass.methodThatOpensAlert();
ca.addEventListener("button1Clicked", button1ClickHandler);
ca.addEventListener("button2Clicked", button2ClickHandler);

そして、マウスイベントはデフォルトでまだバブルしていると思います。そのため、ポップアップでクリックイベントをリッスンし、event.targetを使用して、それが関心のあるボタンの1つであるかどうかを判断できます。

あなたがこれを理解できるか、より多くの情報が必要かどうか私に知らせてください。

于 2012-03-24T19:15:40.600 に答える