使用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上看到的行为保持不变。我能够点击我的模态拦截器下面的按钮。
我在这里缺少什么?我忽略了一些明显的东西?
答案 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();
}