3

ユーザーがそのカスタムコンポーネントインスタンスの外部をクリックしたときにトリガーされるカスタムイベントを作成する方法はありますか?基本的に、メインフレックスアプリの他の場所。ありがとう。

4

4 に答える 4

6

イベントをご利用いただけますFlexMouseEvent.MOUSE_DOWN_OUTSIDE。例えば:

myPopup.addEventListener(
   FlexMouseEvent.MOUSE_DOWN_OUTSIDE,
   function(mouseEvt:FlexMouseEvent):void
   {
       PopUpManager.removePopUp(myPopup);
   }
);
于 2009-07-18T16:18:40.110 に答える
2
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();
}
于 2009-07-18T16:19:43.837 に答える
0

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 
于 2012-05-06T14:54:52.093 に答える
-1

Flex /Actionscript3-ポップアップアンカーの外側の任意の場所でマウスをクリックしてポップアップアンカーを閉じる

4.6 SDKの場合は、これを試してください。

frmPUA.popUp.addEventListener(FlexMouseEvent.MOUSE_DOWN_OUTSIDE、menuPopOutside、false、0、true);

完全なコードはで利用可能です

http://saravanakumargn.wordpress.com/2013/12/14/flexactionscript-3-close-popupanchor-on-mouse-clicked-anywhere-outside-popup-anchor-2/

于 2013-12-14T07:55:52.727 に答える