当应用程序加载时,将为 Flex 应用程序调用
initApp()
方法,或者为 Flash Professional 应用程序执行时间轴(非函数)代码。此代码定义将由 Validator 类验证的示例 XML 包。以下代码运行:
employeeXML =
<employee id="12345">
<firstName>John</firstName>
<lastName>Doe</lastName>
<costCenter>12345</costCenter>
<costCenter>67890</costCenter>
</employee>;
}
稍后,将在舞台上的 TextArea 组件实例中显示该 XML 包。此步骤允许您在尝试重新验证 XML 包之前对其进行修改。
用户单击 Validate 按钮时,将调用
validateData()
方法。该方法使用 Validator 类中的
validateEmployeeXML()
方法来验证员工 XML 包。以下显示的是
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);
}
}
首先,使用 TextArea 组件实例
xmlText
的内容创建一个临时的 XML 对象。接下来,将调用自定义 Validator 类 (com.example.programmingas3/errors/Validator.as) 中的
validateEmployeeXML()
方法,并将临时 XML 对象作为参数传递。如果这个 XML 包是有效的,Label 组件实例
status
便会显示一条成功消息,然后应用程序退出。如果
validateEmployeeXML()
方法引发了一个自定义错误(即发生 FatalError、WarningError 或一般的 Error),则会执行相应的
catch
语句并调用
showFatalError()
、
showWarningError()
或
showGenericError()
方法。这几种方法均会在一个名为
statusTex
t 的文本区域中显示相应的消息,以通知用户发生了特定错误。每个方法还会用具体的消息更新 Label 组件实例
status
。
如以下代码所示,如果尝试验证员工 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
TextField 和 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,导致应用程序终止。