2011-09-06 2 views
0

Flex (Flash Builder 4)에서 PopUpManager.addPopUp을 통해 새 창을 엽니 다. 내 구성 요소에서 실행되는 타이머 코드가 있으며 창이 열리면 타이머를 중지하고 창이 닫히면 타이머를 다시 시작해야합니다.Flex : PopUpManager 창이 열려 있는지 (닫혀있을 때) 결정하는 방법?

창을 여는 기능에서 타이머를 중지하기는 쉽지만 창이 닫힐 때 타이머를 다시 시작하려면 어떻게해야합니까?

내 구성 요소 앞에 팝업 창이 있는지 또는 특정 팝업 창이 여전히 PopUpManager를 통해 열려 있는지 확인할 수있는 방법이 있습니까?

이벤트가 더 좋은 방법일까요?

감사합니다.

+0

당신은 당신 자신의 질문에 대답 했습니까? ;) Events FTW – RIAstar

+0

나는 당신의 질문을 이해하지 못했을 지 모르지만, 당신은 팝업창이 닫혔는지 알아야 할 필요가있는 것처럼 보입니다. 그럴 경우, 창이 닫혀 있는지를 알아야합니다. 내 질문은 너의 창문을 어때? 단추를 추가하고 해당 단추에 클릭 핸들러를 등록하는 일반적인 방법은 팝업 관리자를 호출하여 창을 닫는 것입니다. 그거하지 않니? –

+0

예, PopUpManager.removePopUp (this)을 사용하고 있습니다. –

답변

0

이벤트로 만들어진 얼마나 많은 팝업 알 수 있습니다! 가야할 길입니다. 시작/종료 중 이벤트를 발생시킵니다. 이벤트 처리기에 논리를 추가하십시오!

+0

나는 그 아이디어가 마음에 들지만, (내 학습 과정을 참 아라.) 같은 구성 요소 2 개가 있고 둘 다 팝업 창을 열면 어떻게 될까? 팝업 창 # 2에서 이벤트를 던지면 구성 요소 1과 2 모두로 전송됩니까? (구성 요소가 어떤 이벤트가 해당 이벤트를 의미하는지 어떻게 알 수 있습니까? 아니면 그것에 대해 잘못 생각한 것일까 요?) –

0

다음 코드를 사용하여 열린 팝업 창이 닫히지 않았는지 확인할 수 있습니다. 닫히면 타이머를 중지 할 수 있습니다. 당신은 팝업 창을 열 때

private function checkPopUpExistance():void 
    { 
    call closePopUpWindow() function for every 1 sec or any seconds(your wish) to check whether popup is exist or not. 
    if(isPopupExist) 
    { 
     here you stop the timer. 
    } 
} 

당신의 타이머에

//set the flag to find your popup window is exist or not. 
    private var isPopupExist:Boolean = false; 

    private function closePopUpWindow():void 
    { 

    var systemManager:SystemManager = FlexGlobals.topLevelApplication.systemManager; 
    //Returns a list of all children. 
    var childList:IChildList = systemManager.rawChildren; 
    for(var i:int=childList.numChildren-1;i>=0;i--) 
    { 
     var childObject:* = childList.getChildAt(i); 
     //If child object is Uicomponent. 
     if (childObject is UIComponent) 
     { 
     var uiComponent:UIComponent = childObject as UIComponent; 
     //If uicomponent is popup and class name is equal to **your popup component name** here i am using "ChatComp". 

      if (uiComponent.isPopUp && uiComponent.className == "ChatComp") 
      { 
        isPopupExist = true; 
      } 
     } 
    } 
} 

은 지금 당신은 타이머를 시작할 수 있습니다.

관련 문제