ユーザーがそのカスタムコンポーネントインスタンスの外部をクリックしたときにトリガーされるカスタムイベントを作成する方法はありますか?基本的に、メインフレックスアプリの他の場所。ありがとう。
4 に答える
イベントをご利用いただけますFlexMouseEvent.MOUSE_DOWN_OUTSIDE
。例えば:
myPopup.addEventListener(
FlexMouseEvent.MOUSE_DOWN_OUTSIDE,
function(mouseEvt:FlexMouseEvent):void
{
PopUpManager.removePopUp(myPopup);
}
);
stage.addEventListener( MouseEvent.CLICK, stgMouseListener, false, 0, true );
...
private function stgMouseListener( evt:MouseEvent ):void
{
trace("click on stage");
}
private function yourComponentListener( evt:MouseEvent ):void
{
trace("do your thing");
evt.stopPropagation();
}
Senocularからこれを入手しました。私はそれがこの主題に当てはまると思います、少なくともそれは私のためにトリックをしました。jedierikbが提案したことは同じようですが、少し不完全です。
イベントの伝播の防止
イベントがそれ以上伝播しないようにする場合は、stopPropagation()(flash.events.Event.stopPropagation())またはstopImmediatePropagation()(flash.events.Event.stopImmediatePropagation()を使用して、イベントリスナー内での伝播を停止できます。 ))。これらのメソッドは、イベントリスナーに渡されたEventオブジェクトから呼び出され、少なくともその時点を過ぎても、イベントの発生を本質的に停止します。
stopPropagationは、現在を超えるオブジェクトがイベントを受信するのを防ぎます。これは、イベントの任意のフェーズ内にある可能性があります。stopImmediatePropagationは同じことを行いますが、イベントを受信する現在のターゲット内の追加のイベントも発生しないようにする追加の手順を実行します。したがって、stopPropagationはスプライトAの親がイベントを受信できないようにしますが、stopImmediatePropagationは、スプライトAの親とスプライトAをリッスンしている他のリスナーがイベントを受信できないようにします。
例:stopPropagationとstopImmediatePropagationのActionScriptコードの使用を切り替えます。
var circle:Sprite = new Sprite();
circle.graphics.beginFill(0x4080A0);
circle.graphics.drawCircle(50, 50, 25);
addChild(circle);
circle.addEventListener(MouseEvent.CLICK, clickCircle1);
circle.addEventListener(MouseEvent.CLICK, clickCircle2);
stage.addEventListener(MouseEvent.CLICK, clickStage);
function clickCircle1(evt:MouseEvent):void {
evt.stopPropagation();
// evt.stopImmediatePropagation();
trace("clickCircle1");
}
function clickCircle2(evt:MouseEvent):void {
trace("clickCircle2");
}
function clickStage(evt:MouseEvent):void {
trace("clickStage");
}
円をクリックして、各メソッドでイベントがどのように停止するかを確認してください。stopPropagationはステージがイベントを受信できないようにし、stopImmediatePropagationはclickCircle2がイベントを認識できないようにしました
通常の出力
clickCircle1
clickCircle2
clickStage
stopPropagation出力
clickCircle1
clickCircle2
stopImmediatePropagation出力
clickCircle1
Flex /Actionscript3-ポップアップアンカーの外側の任意の場所でマウスをクリックしてポップアップアンカーを閉じる
4.6 SDKの場合は、これを試してください。
frmPUA.popUp.addEventListener(FlexMouseEvent.MOUSE_DOWN_OUTSIDE、menuPopOutside、false、0、true);
完全なコードはで利用可能です