2013-01-02 3 views
0

경고 상자를 특정 모듈로 제한하려고 시도했지만 모듈 외부에 범위가 없어야합니다. 각기 다른 모듈을 포함하는 2 개의 탭으로 유지했습니다. 그러나 경보의 범위는 전역 적이며 모듈 영역을 제한하는 것 이외의 전체 창에 영향을 미치고 있습니다. 아래 코드를 참조하십시오.Alertbox/Pop-up을 flex 3의 inidvdual 모듈에만 적용하십시오.

main.mxml

<?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

<?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

<?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> 

감사합니다 내 댓글 당

+1

Alert.show가 작동하는 방식입니다. 루트 응용 프로그램 수준에서 경고를 작성합니다. "부모"를 지정하는 유일한 방법은 경고에 중점을 둘 사항을 flex에 알려주는 것입니다. 탭을 다른 모듈로 변경할 때 알림이 사라지고 모듈이 표시 될 때만 알림이 표시되도록하려면 (내가 생각한대로 생각합니다.) 알림이 표시되는 맞춤 구성 요소를 만들어야합니다. Alert 클래스를 사용하는 대신 코드로 오버레이 할 수 있습니다. –

+0

작은 맞춤 클래스를 예제로 제공해 주시면 더 좋은 아이디어를 얻을 수 있습니다. 미리 감사드립니다. – user1647017

+0

좀 더 생각해 보면, 아마도 PopUpManager를 사용할 수있을 것입니다. 내가 대답을 –

답변

0

, 당신 같으면를하려고했던 것 ' T는 일을 ..하지만 여기에 방법을 수행하기 위해 :

를 경고 표시 할 수있는 각각의 모듈이없이 모듈의 최상층에 경고를 강제

<s:VGroup id="alertLayer" width="100%" height="100%" verticalAlign="middle" horizontalAlign="center" /> 

모듈 MXML의 다음

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"); 
} 

을 PopUpManager 또는 전역 범위를 사용합니다. 이게 네가 한 일이야?

+0

코드를 제공 할거야 내 원래의 문제를 해결할 것이라고 생각하지 않지만 시간을내어 올바른 경로를 보여주는 주셔서 감사합니다. – user1647017

+0

여기서는 실제 경고 클래스 –

+1

을 사용하여 제한하는 방법을 보여주는 답변을 편집합니다 ... –