如何在AIR移动设备上配置模式弹出窗口以阻止MouseEvent.CLICK?

时间:2012-08-20 17:42:36

标签: actionscript-3 flash mobile air

使用AIR 3.1并使用(桌面AIR)模拟器和Nook平板电脑(运行Android 2.3)进行测试。

我正在使用以下代码添加模式弹出窗口...

PopUpManager.addPopUp( popUp, FlexGlobals.topLevelApplication as DisplayObject, true );

对于AIR的Web和桌面版本,上面的代码可以防止模式弹出窗口下方/后面的按钮或其他内容被点击。 但是,在AIR mobile上,可以在模态阻止程序后单击按钮。

我还试图通过向顶级应用程序添加100%宽度/高度的UIComponent来创建我自己的模态阻止程序,然后在其上面显示我的弹出窗口。 我在“阻塞”UIComponent的图形对象中绘制了一个部分透明的rect,然后我添加了一个MouseEvent.CLICK监听器:

blocker.addEventListener( MouseEvent.CLICK, onMouseClick, true, int.MAX_VALUE );

// Then my handler looked like this
private function onMouseClick( event:Event ):void {
    event.stopImmediatePropagation();
}

我尝试使用TRUE和FALSE的useCapture值但是我在Nook上看到的行为保持不变。我能够点击我的模态拦截器下面的按钮。

我在这里缺少什么?我忽略了一些明显的东西?

1 个答案:

答案 0 :(得分:2)

您可以尝试向舞台添加Mouse_Down或点击侦听器,如果目标不是弹出窗口的后代,则可以停止传播。

stage.addEventListener(MouseEvent.CLICK,blockClick,true,int.MAX_VALUE,true);

function blockClick(e:MouseEvent):void {
    var curTarget:DisplayObject = e.target as DisplayObject;

    while(curTarget){
        if(curTarget == popup) return;
        curTarget = curTarget.parent;
    }

    e.stopImmediatePropagation();
}