У меня есть следующая проблема: мой босс хочет, чтобы я сделал наше приложение гораздо более отзывчивым, не ожидая времени между переключениями. Он использовался для «стандартного» приложения на основе ViewNavigator
, но только с одним View
, который был уничтожен и заново создан с различным контентом на основе пользовательского выбора вкладок, которые он создал сам. Просмотры переключился по умолчанию SlideViewTransition
. Сейчас я схожу на полсекунды с чуть более легким подходом, как описано ниже, однако половина секунд все еще слишком много.Предварительно загружать динамически созданные виды в ActionScript для Flex Mobile App
Приложение представляет собой приложение с вкладками, в котором пользователь может самостоятельно создавать и редактировать новые виды, поэтому создавать/редактировать/удалять вкладки и соответствующие им вкладки. Моя текущая реализация основана на ButtonBar
и Group
, которая используется для отображения «просмотров». Содержимое группы создается на основе выбранной вкладки. Содержимое основано на XML-данных, которые хранят всю необходимую информацию для создания «представления». Естественно, удаление и создание компонента занимает немного времени (половина секунды, о которой я говорил), поэтому я следую другому решению.
О чем я думал, является использование ViewNavigator
и создание всех сохраненных представлений при запуске приложения.
Очень так:
for each (var _view:XML in _allViewsConfig.children()) {
var compView:View = new View();
compView.percentHeight = 100;
compView.percentWidth = 100;
compView.name = _view.label;
for each (var _groupElement:XML in _view.vgroup) {
var group:VGroup = new VGroup;
group.percentWidth = 100;
group.percentHeight = 100;
for each (var _windowElement:XML in _groupElement.window) {
var window:WindowContainer = new WindowContainer;
for each (var _componentElement:XML in _windowElement.component) {
var component:UIComponent = _componentManager.create([email protected], _componentElement);
window.addElement(component);
}
group.addElement(window);
}
compView.addElement(group);
}
views.addItem(compView);
}
views
является ArrayList, который используется для хранения созданных представлений.
Единственная проблема, с которой я столкнулся сейчас, это то, что я не могу использовать View
s, хранящийся в этом ArrayList, в соответствующем ViewNavigator
.
Я пробовал обычным способом, т.е. navigation.pushView(_viewCreator.views.getItemAt(0) as Class);
Это, однако не работает, ошибок или что-либо, то ViewNavigator
просто ничего не делать, так что я думаю, что View
класс не может быть создан, как это ,
Так как я могу сделать эту работу? Также вы думаете, что это правильное решение проблемы, особенно учитывая всю динамическую природу приложения (основываясь на вкладках)? Естественно, слайд-переходы будут полностью отключены, поскольку они довольно медленны с нашими сложными компонентами.
Любая помощь, комментарии или мысли были бы высоко оценены!
EDIT: На второй мысли, просто используя Groups
вместо ViewNavigator
и View
должны сделать это немного более легкий и решить вопрос взглядов не выдвинуто.
Да, использование 'Group' работает очень хорошо и довольно быстро. Однако не тестировалось на iPad2/3. Вопрос остается, жизнеспособное решение проблемы? – AlBirdie
Где именно ваше замедление? Создание самого представления или получение данных/изображений для представления? Создание представления должно быть довольно быстрым, достаточно быстрым, чтобы вы не заметили. Предварительно загружаете данные/изображения? –
Создание представления было/было прекрасным, это просто процесс получения данных (из XML, который есть), а затем рисование подкомпонентов (которые довольно сложны), которые заняли около половины секунды. Предварительная загрузка, которую я сейчас делаю, работает довольно хорошо. – AlBirdie