При загрузке приложений Flex вызывается метод
initApp()
, а при загрузке приложений Flash Professional выполняется код временной шкалы (при отсутствии функций). Этот код определяет образец пакета XML, который необходимо проверить с помощью класса Validator. Выполняется следующий код:
employeeXML =
<employee id="12345">
<firstName>John</firstName>
<lastName>Doe</lastName>
<costCenter>12345</costCenter>
<costCenter>67890</costCenter>
</employee>;
}
Пакет XML позже отображается в экземпляре компонента TextArea в рабочей области. Это позволяет модифицировать пакет XML перед попыткой его повторного подтверждения.
При нажатии кнопки Validate (Подтвердить) вызывается метод
validateData()
. Этот метод проверяет служебный пакет XML (список служащих) с помощью метода
validateEmployeeXML()
класса Validator. Следующий код демонстрирует метод
validateData()
:
function validateData():void
{
try
{
var tempXML:XML = XML(xmlText.text);
Validator.validateEmployeeXML(tempXML);
status.text = "The XML was successfully validated.";
}
catch (error:FatalError)
{
showFatalError(error);
}
catch (error:WarningError)
{
showWarningError(error);
}
catch (error:Error)
{
showGenericError(error);
}
}
Прежде всего создается временный объект XML с помощью содержимого экземпляра компонента TextArea —
xmlText
. Затем вызывается метод
validateEmployeeXML()
в пользовательском классе Validator com.example.programmingas3/errors/Validator.as), который передает временный объект XML в качестве параметра. Если пакет XML оказывается действительным, экземпляр
status
компонента Label отображает подтверждающее сообщение и приложение закрывается. Если метод
validateEmployeeXML()
генерирует пользовательскую ошибку (то есть FatalError, WarningError или базовую ошибку Error), выполняется соответствующая инструкция
catch
, которая вызывает один из следующих методов:
showFatalError()
,
showWarningError()
или
showGenericError()
. Каждый из этих методов отображает в текстовой области с именем
statusText
соответствующее сообщение для уведомления пользователя о возникновении специфической ошибки. Каждый метод обновляет также экземпляр
status
компонента Label специальным сообщением.
Если при попытке подтверждения служебного пакета XML происходит фатальная ошибка, в текстовой области
statusText
отображается сообщение об ошибке, а экземпляр
xmlText
компонента TextArea и экземпляр
validateBtn
компонента Button отключаются, как показано в следующем коде:
function showFatalError(error:FatalError):void
{
var message:String = error.message + "\n\n";
var title:String = error.getTitle();
statusText.text = message + " " + title + "\n\nThis application has ended.";
this.xmlText.enabled = false;
this.validateBtn.enabled = false;
hideButtons();
}
Если вместо фатальной ошибки происходит предупреждающая ошибка, в текстовой области
statusText
также отображается сообщение об ошибке, но экземпляры компонентов TextArea (
xmlText
) и Button не отключаются. Метод
showWarningError()
отображает сообщение о пользовательской ошибке в текстовой области
statusText
. Также в сообщении пользователю предлагается сделать выбор: продолжить подтверждение XML или отменить выполнение сценария. Следующий фрагмент демонстрирует метод
showWarningError()
:
function showWarningError(error:WarningError):void
{
var message:String = error.message + "\n\n" + "Do you want to exit this application?";
showButtons();
var title:String = error.getTitle();
statusText.text = message;
}
Метод
closeHandler()
вызывается при нажатии кнопок «Да» или «Нет». Следующий фрагмент демонстрирует метод
closeHandler()
:
function closeHandler(event:CloseEvent):void
{
switch (event.detail)
{
case yesButton:
showFatalError(new FatalError(9999));
break;
case noButton:
statusText.text = "";
hideButtons();
break;
}
}
Если пользователь решает отменить выполнение сценария нажатием кнопки «Да», генерируется фатальная ошибка FatalError, что приводит к закрытию приложения.