Как переместить гигантский блок объектов, которые мои сохраненные записи до и вниз?
У вас нет. Как вы заметили, когда число Display Objects
на DisplayList
значительно увеличивается, накладные расходы памяти увеличиваются, а служебные данные об управлении Display Objects
в конечном итоге приводят к ухудшению производительности. Вы не упоминаете никаких подробностей о том, как вы реализуете то, что у вас есть, поэтому мои комментарии будут общими.
Как это обрабатывается различными платформа компонентами списка в Flex, прошивке и я полагаю, Flash, чтобы отображать только минимальное количество объектов, необходимых, а также прокрутку, объекты перемешиваются и из список рендеринга. Дальнейшая оптимизация заключается в использовании «пула» объектов «шаблона», которые используются повторно, поэтому вы не платите штраф за время инициализации. Вероятно, существует фактическое имя для этой («... буферизации ...»), но я не знаю, что это (надеюсь, какой-то добрый человек предоставит ее и ссылку на более полное описание того, как она работает).
А как это работает - вы можете сделать это, выясняя, как пользователь прокручивает, какие объекты перемещаются за пределы экрана и могут быть переработаны, которые будут перемещаться по экрану и т. Д. Конечно, это все предполагает, что у вас есть ваши объекты, хранящиеся в структуре данных, например, и Array
, ArrayList
или ArrayCollection
. В качестве альтернативы кодированию всего этого с нуля вы можете увидеть, будут ли компоненты DataGrid или List соответствовать вашим потребностям - они все это для вас помогут.
Flash Tutorial: The DataGrid Component (YOUTUBE видео)
Customize the List component
Много других примеров и ресурсов там.
(опять же, я работаю в Flex, где DataGrid и других компонентов на основе списков можно настроить широко используя «скины» и пользовательские средства визуализации элементов для визуального стиля - не уверен, если это то же самое в Flash)
«* заплатите штраф за время инициализации *», насколько я видел, это скорее штраф времени уничтожения. Сборщик мусора продолжает накапливать мусор до достижения определенного порога. Затем он удаляет фактически удаляющие объекты, которые сами требуют некоторой производительности, что может привести к пропущенным кадрам. Предотвращение сбора объектов от GC, заставляя их оставаться в памяти и повторно использовать их, чтобы не хватать памяти, - это метод, называемый «объединение объектов». – null