Развернутый гибкий апплет не обрабатывает результаты веб-службы - PullRequest
1 голос
/ 20 ноября 2010

Когда я тестирую развернутое приложение в браузере, всплывающее окно продолжает отображаться даже после его закрытия.При отладке во Flash Builder 4 все работает, как и ожидалосьотправляет динамическое событие profileEvt, которое изменяет состояние просмотра.Однако всплывающее окно не закрывается, и апплет застревает.

Кто-нибудь знает, в чем может быть проблема?Ниже приведены обработчики событий веб-службы Flex-апплета:

webService.addEventListener(ResultEvent.RESULT, function(event:ResultEvent):void 
                    {
                        var rawData:String = String(event.result);
                        var profileEvt:DynamicEvent = new DynamicEvent("profileSaved", true);
                        profileEvt.data = JSON.decode(rawData).profile;
                        dispatchEvent(profileEvt); // Dispatch profile saved event
                        _progressPopUp.closePopUp();
                        dispatchEvent(event); // Dispatch submit profile button clicked
                    });
webService.addEventListener(FaultEvent.FAULT, function(event:FaultEvent):void 
                    {
                        Alert.show("Could not create profile; please try again later.\n" + event.message, "Status");
                        _progressPopUp.closePopUp();
                    });
                    var params:Object = {"profile" : profile};
try
                    {
                        _progressPopUp = PopUpManager.createPopUp(this, com.profs.ui.components.ProgressPopUp, true);
                        _progressPopUp.eventSource = webService; // Set source of progress events
                        webService.send(JSON.encode(params));   
                    }

ПРИМЕЧАНИЕ: com.profs.ui.components.ProgressPopUp - это пользовательский компонент;код для этого ниже:

<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:fx="http://ns.adobe.com/mxml/2009" 
                xmlns:s="library://ns.adobe.com/flex/spark" 
                xmlns:mx="library://ns.adobe.com/flex/mx" layout="absolute" width="300" height="200" showCloseButton="false" title="Status" creationComplete="init()">
    <fx:Declarations></fx:Declarations>
    <fx:Script>
        <![CDATA[
            import mx.managers.PopUpManager;

            [Bindable] public var eventSource:Object;

            private function init():void 
            {
                PopUpManager.centerPopUp(this);
            }
            public function closePopUp():void 
            {
                PopUpManager.removePopUp(this); 
            }
            public function completionHandler(event:Event):void 
            {
                closePopUp();
            }
        ]]>
    </fx:Script>
    <mx:ProgressBar id="progressBar" indeterminate="true" mode="event" source="{eventSource}" complete="completionHandler(event)" verticalCenter="0" horizontalCenter="0"/>
</mx:TitleWindow>

1 Ответ

0 голосов
/ 21 ноября 2010

Я не знаком с компонентом com.profs.ui.components.progressPopUp, но возможно, что метод closePopUp() содержит ошибку. Вы можете попытаться удалить ProgressPopUp напрямую, используя метод PopUpManager. Например вместо:

_progressPopUp.closePopUp();

1008 * попробовать *

PopUpManager.removePopUp(_progressPopUp);

Я также не знаю, каковы правила закрытия (то есть, в какой момент переменная _progressPopUp копируется в обработчик события ResultEvent.RESULT. Вы можете попробовать переместить этот конкретный обработчик ниже строка, в которой вы фактически создали экземпляр _progressPopUp.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...