2012-03-24 12 views
1

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

例:

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

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

答えて

1

これを達成するためにAsyncTokenを使用することができますが、ポップアップから送信するカスタムイベントに登録することもできます。これは、よりクリーンなIMOメソッドです。本当にあなたは私が考えることができる比較的クリーンな2つの選択肢を持っています。 1では、ポップアップ内のさまざまなボタンのクリックに対して「okClicked」「cancelClicked」などのポップアップディスパッチイベントを作成し、ポップアップのインスタンスを作成してリスナーを追加し、PopUpManager.addPopUpをコールするか、そうでない場合はPopUpManager.createPopUp返された表示オブジェクト(作成したポップアップのインスタンス)への参照を保持し、その後リスナーを追加します。 2ポップアップで2つのプロパティを関数としてタイプした場合、それらをコールバックとして使用するので、ポップアップを作成するときは、okClickedFunctionとcancelClickedFunction(またはボタンが何であれ)を設定し、次にポップアップでボタンのcilckハンドラは、あなたがあなたがたAsyncTokenを使用しなければならないと思わせる具体的なニーズを持っている場合は、私に教えてください

if(okClickedFunction) 
    okClickedFunction(); 

のように、適切なコールバック機能が設定されているかどうかを確認し、もしそうなら、それを呼び出すためにチェックしかし、ドキュメントをチェックアウトすることから、厳密には他のRPCメソッドで動作するように見え、多くのプロパティは読み取り専用です。

EDIT:

[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); 

そして私は、マウスイベントがデフォルトではまだまだバブルだと思うので、ポップアップでclickイベントを聞いて、event.targetを使って興味のあるボタンかどうかを判断してください。

あなたがこれを理解したり、より多くの情報を必要とするかどうかを知ってください。

+0

こんにちは、ショーン。私はあなたが何を意味するのか知っていますが、私が望むのは、メソッドが他のコンポーネントが聴くことができるものを返すものを返すことです。 – Francisc

+0

また、私は、AsyncTokenがRPC用であり、私が達成しようとしているものに合っていないと心配しています。 – Francisc

+0

ああ、最初のオプションにはうまくいくはずです。ポップアップ自体にイベントをディスパッチし、ポップアップを作成するメソッドを呼び出すと、そのインスタンスが返されます。擬似コードを与えるように編集します。 – shaunhusain

関連する問題