|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Nov 2003
Сообщений: 289
|
Пути повышения производительности визуальных компонентов
Друзья, в контейнер в рантайме необходимо добавить достаточно большое количество дочерних компонентов, например 100 (к примеру 100 Panel'ей). Этот процесс занимает приличный промежуток времени - более секунды. Вопрос - можно ли как-то штатными средствами флекса ускорить это дело? Каким-то образом может быть заблокировать компонент на перерисовку до окончания добавления всех дочерних? Или есть иные способы (кроме, конечно, очевидного добавления дочерних компонентов порциями по несколько штук). Подскажите пожалуйста...
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" horizontalAlign="left"> <mx:Script> <![CDATA[ import mx.containers.Panel; private var l_t:Number; private function init():void { l_t = new Date().getTime(); var l_p:Panel; for (var i:int = 0; i < 120; i++) { l_p = new Panel(); l_p.x = 80 * i; cv.addChild(l_p); } } private function created():void { var l_2:Number = new Date().getTime(); trace(l_2 - l_t); } ]]> </mx:Script> <mx:Button click="init()" ></mx:Button> <mx:Canvas id="cv" updateComplete="created()" width="500" height="300"></mx:Canvas> </mx:Application> Последний раз редактировалось etc; 28.02.2009 в 13:02. |
|
|||||
Modus ponens
|
Э... чего? Зачем такое безумное количество панелей? Вы же понимаете, что 1 панель - это уже куча спрайтов + довольно много кода только для инициализации... тут проблема не в добавлении, их создать в таком количестве уже быстро не получится...
__________________
Hell is the possibility of sanity |
|
|||||
Регистрация: Nov 2003
Сообщений: 289
|
Конкретно в моем случае не панели конечно, а подобные конструкции (просто контейнер с рамкой, внутри которого пару текстовых полей):
Код AS3: <mx:VBox> <mx:Canvas> <mx:Label> <mx:Label> </mx:Label> </mx:Label> </mx:VBox> </mx:Canvas> Последний раз редактировалось : hr :; 27.02.2009 в 19:26. |
|
|||||
Modus ponens
|
Ну, если чесно, то ничем не лучше... Бокс - уже пару спрайтов, вы в него еще канвас запихнули - это еще + пару спрайтов + еще пару текстовых полей. А теперь умножьте... и добавьте к этому всему код нужный для инициализации каждого элемента... Не знаю, я бы старался избегать подобных ситуаций... ну или если так уж припрет показать одновременно несколько сотен отдельных текстовых полей, то, наверное, не использовал бы лейблы, а текстовые поля... ну и вообще постарался бы добиться подобного эффекта используя минимум элементов - форматируя одно текстовое поле например, вместо создания множества и т.п. Вообще, как вы себе представляете интерфейс пользователя состоящий из сотен компонентов? Пользователь поседеет пока научится им пользоваться
__________________
Hell is the possibility of sanity |
|
|||||
Регистрация: Nov 2003
Сообщений: 289
|
Такой интерфейс пользователя взят из канонического примера Flex-приложения. Визуальный компонент, представляющий thumbnail товара имеет как раз подобную структуру. Вопрос в том, может ли флекс помочь мне в реальном деле создания подобного интерфейса магазина, где сотня товаров?
|
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Сотня мало. Берите тысячу. Тайллист вам нужно писать такой, который отображает ровно то, что есть на экране и подменяет данные в каждом item-е при скроллинге, не меняя набор item-ов вовсе.
|
|
|||||
Регистрация: Nov 2003
Сообщений: 289
|
__etc, спасибо, понятно.
|
Часовой пояс GMT +4, время: 14:26. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|