Actionscript 3 Flex:如何在导航到任何其他页面之前提示警报
如何在突出显示/导航到另一个面板/页面之前请求用户确认 我的屏幕上几乎没有面板。每个面板都有许多控件。我想用“确定”和“取消”按钮提示消息框或警报,并在用户单击另一个面板时进行确认 如果用户单击“确定”按钮,则导航到另一个面板/页面。 如果用户单击“取消”按钮,则删除警报并将焦点放在同一面板上 目前,我已经使用面板的focus_out event focusouthandlerevent:FocusEvent实现了这个功能。我点击了另一个面板中的按钮,现在我得到了警报,但当我在警报中点击OK时,什么都没有发生按钮点击事件没有被触发Actionscript 3 Flex:如何在导航到任何其他页面之前提示警报,actionscript-3,apache-flex,flex3,flex4.5,Actionscript 3,Apache Flex,Flex3,Flex4.5,如何在突出显示/导航到另一个面板/页面之前请求用户确认 我的屏幕上几乎没有面板。每个面板都有许多控件。我想用“确定”和“取消”按钮提示消息框或警报,并在用户单击另一个面板时进行确认 如果用户单击“确定”按钮,则导航到另一个面板/页面。 如果用户单击“取消”按钮,则删除警报并将焦点放在同一面板上 目前,我已经使用面板的focus_out event focusouthandlerevent:FocusEvent实现了这个功能。我点击了另一个面板中的按钮,现在我得到了警报,但当我在警报中点击OK时,
提前感谢从它的声音中,您想根据单击警报上的哪个按钮作出反应 如果是这种情况,请在中使用内置的close处理程序 警报类有一个静态方法show,具有以下签名:
public static function show(text:String = "", title:String = "", flags:uint = 0x4, parent:Sprite = null, closeHandler:Function = null, iconClass:Class = null, defaultButtonFlag:uint = 0x4, moduleFactory:IFlexModuleFactory = null):Alert
通过在flags参数中使用pipe操作符添加两个标志
Alert.OK | | Alert.CANCEL然后在closeHandler参数中添加关闭处理程序,您可以检查单击了哪个按钮并做出相应的反应
大概是这样的:
警报:
Alert.showAlert Title,是否继续?,Alert.OK | | Alert.CANCEL,this,onClose
onClose功能:
private function onClose(event:CloseEvent)
{
if (eventObj.detail==Alert.OK)
{
//proceed
}
else
{
//cancel operation
}
}
根据您对James post的评论,我正在发布示例,不确定您是否正在寻找相同的示例:-希望下面的代码可以给您一些想法
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.events.CloseEvent;
private var storeNextFocusID:String = "first";
private var storePreviousFocusID:String = "first";
private function firstFocus():void
{
first.setFocus();
storePreviousFocusID = first.name;
}
private function showFirstTimeAlert(event:MouseEvent):void
{
if(event.currentTarget.name != storePreviousFocusID)
{
Alert.show("Do you want to change Tab?","Alert",Alert.OK|Alert.CANCEL,null,closeHandler)
storeNextFocusID = event.currentTarget.name;
}
}
private function closeHandler(event:CloseEvent):void
{
if(event.detail == Alert.OK)
{
var focusCont:HGroup = mainContainer.getChildByName(storeNextFocusID) as HGroup;
focusCont.setFocus();
storePreviousFocusID = storeNextFocusID;
} else
{
}
}
]]>
</fx:Script>
<s:VGroup id="mainContainer" x="50" y="50" width="400" height="300" creationComplete="firstFocus()">
<s:HGroup id="first" name="first" width="100%" height="100%" click="showFirstTimeAlert(event)">
<mx:TabNavigator width="100%" height="100%">
<mx:VBox label="left">
<mx:Label text="labelPlacement = 'left'" />
</mx:VBox>
<mx:VBox label="right">
<mx:Label text="labelPlacement = 'right'" />
</mx:VBox>
</mx:TabNavigator>
<s:Panel width="100%" height="100%">
</s:Panel>
</s:HGroup>
<s:HGroup id="second" name="second" width="100%" height="100%" click="showFirstTimeAlert(event)">
<mx:TabNavigator width="100%" height="100%">
<mx:VBox label="top">
<mx:Label text="labelPlacement = 'top'" />
</mx:VBox>
<mx:VBox label="bottom">
<mx:Label text="labelPlacement = 'bottom'" />
</mx:VBox>
</mx:TabNavigator>
<s:Panel width="100%" height="100%">
</s:Panel>
</s:HGroup>
</s:VGroup>
</s:Application>
粘贴一些示例代码。。。您正在使用哪个父容器,例如:-ViewStack、tabnavigator…等等。最顶端的父元素是VGroup。它有HGroup、Tab navigator、Panels等元素。创建示例并粘贴。。。不仅仅是我们能帮忙…谢谢你的帮助。这里我们需要识别用户单击的另一个容器中的按钮/控件。但从您的示例中,我们可以确定在警报窗口上单击了哪个按钮“确定”或“取消”按钮