У меня есть flex-приложение с двумя объектами: родительский виджет (называемый IBaseWidget) и дочерний виджет (называемый HelperWidget2).Когда пользователь нажимает на ссылку справки, вспомогательный виджет загружается в список базовых виджетов и затем отображается для пользователя.
Однако, когда я пытаюсь получить доступ к этому дочернему виджету путем приведения базового виджета в коллекции к типу дочернего виджета, дочерний виджет возвращает ноль, и я не могу работать с виджетом.
Следующий фрагмент корректно возвращает идентификатор виджета недавно добавленного виджета и отправляет событие для загрузки виджета:
var id:Number = WidgetManager.getInstance().getWidgetId("Helper");
ViewerContainer.dispatchEvent(new AppEvent(AppEvent.WIDGET_RUN, id, openQuickQueryCanvas));
После загрузки виджета функция обратного вызова openQuickQueryCanvas () пытается выполнить другое действиес помощью вспомогательного виджета:
private function openQuickQueryCanvas():void{
var id:Number = WidgetManager.getInstance().getWidgetId("Helper");
var bWidget:IBaseWidget = WidgetManager.getInstance().getWidget(id) as IBaseWidget;
var helperWidget:HelperWidget2 = bWidget as HelperWidget2;
if(helperWidget != null){
helperWidget.quickQueryCanvas.dispatchEvent(new MouseEvent(MouseEvent.CLICK));//fire an event to open the quick query canvas
}
}
Проблема в том, что приведенный выше helperWidget всегда возвращает ноль, что означает, что приведение не было успешным.Это не имеет смысла для меня, потому что bWidget имеет тип HelperWidget2.
Есть мысли?Я в тупике ...