首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Alertbox/Pop-up限制为flex 3中的inidvdual模块

将Alertbox/Pop-up限制为flex 3中的inidvdual模块
EN

Stack Overflow用户
提问于 2013-01-02 18:19:46
回答 1查看 443关注 0票数 0

我正在尝试将警报框限制为特定模块,它的作用域不应超出模块范围。我保留了2个标签,每个标签包含不同的模块。但警报的范围是全局的,它影响整个窗口,而不是局限于模块区域。请看下面的代码。

main.mxml

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
    <![CDATA[
          import mx.modules.*;

         public function createModule(m:ModuleLoader, s:String):void {
        if (!m.url) {
            m.url = s;
            return;
        }
        m.loadModule();
    }

    public function removeModule(m:ModuleLoader):void {
        m.unloadModule();
    }


    ]]>
</mx:Script>
 <mx:Panel title="Module Example" 
    height="90%" 
    width="90%" 
    paddingTop="10" 
    paddingLeft="10" 
    paddingRight="10" 
    paddingBottom="10"
 >
    <mx:TabNavigator id="tn" 
        width="100%" 
        height="100%" 
        creationPolicy="auto">
        <mx:VBox id="vb1" label="Column Chart Module">                
            <mx:Button 
                label="Load"   click="createModule(chartModuleLoader, l1.text)"/>
            <mx:Button 
                label="Unload" />
            <mx:Label id="l1" text="module1.swf"/>
            <mx:ModuleLoader id="chartModuleLoader"/>                                
        </mx:VBox>

        <mx:VBox id="vb2" label="Form Module">
            <mx:Button 
                label="Load"    click="createModule(formModuleLoader, l2.text)"/>
            <mx:Button 
                label="Unload"/>
            <mx:Label id="l2" text="module2.swf"/>
            <mx:ModuleLoader id="formModuleLoader"/>
        </mx:VBox>
    </mx:TabNavigator>
</mx:Panel>
</mx:Application>

Module1.mxml

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<mx:Module xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="400"    height="300">
<mx:Button label="Click 1 " click="ini()"/>
<mx:Script>
    <![CDATA[
        import mx.controls.Alert;

        public function ini():void
        {
            Alert.show("How","hello", 0,null,null,null,0);
        }

    ]]>
</mx:Script>
</mx:Module>

Module2.mxml

代码语言:javascript
复制
 <?xml version="1.0" encoding="utf-8"?>
 <mx:Module xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="400" height="300">
<mx:Button label="Click 2 " click="ini1()"/>
<mx:Script>
    <![CDATA[
        import mx.controls.Alert;

        public function ini1():void
        {
            Alert.show("Click 2","hello", 0,this);
        }

    ]]>
</mx:Script>
 </mx:Module>

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-08 23:35:43

根据我的评论,你尝试的方法不会奏效..但这里有一种方法来实现它:

在可以显示警报的每个模块中:

代码语言:javascript
复制
private function createAlert(text:String):void{
    var myAlert:Alert = new Alert();
    myAlert.addEventListener(CloseEvent.CLOSE, onClose);
    myAlert.title = "Attention";
    myAlert.label = text;
    alertLayer.addElement(myAlert);
}

private function onClose(event:CloseEvent):void{
    trace("closed");
}

然后在模块mxml中

代码语言:javascript
复制
<s:VGroup id="alertLayer" width="100%" height="100%" verticalAlign="middle" horizontalAlign="center" />

这将强制警报位于模块的最顶层,而根本不使用PopUpManager或全局作用域。这是你想要的更多的东西吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14120286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档