Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
52
Добавлен:
02.04.2015
Размер:
8.79 Mб
Скачать
    1. Задержка и принудительное обновление изображения на экране

Если Ваше приложение выполняет одновременно изменения в большом количестве виджетов, Вы можете захотеть задержать обновление экрана до тех пор, пока не завершатся все изменения. Это может дать уменьшение мерцания, и в некоторых случаях улучшить производительность Вашего приложения.

Вы можете задержать обновление:

  • всех виджетов Вашего приложения – библиотеки Photon'а записывают какие-либо изменения, но не перерисовывают виджеты.

  • заданного контейнера и его потомков – библиотеки даже не записывают изменения.

          1. Глобально

Библиотеки Photon'а используют "счётчик удержаний", позволяющий Вам задерживать обновление экрана для Вашего приложения в целом:

  • Когда счётчик удержаний ненулевой, экран не обновляется. Для увеличения значения счётчика удержаний вызывается функция PtHold().

  • Когда Вы модифицируете виджет, библиотеки помечают его как "повреждённые".

  • Когда счётчик удержаний равен 0, библиотеки восстанавливают повреждённые виджеты как нормальные. Чтобы уменьшить значение счётчика удержаний, вызываются функции PtRelease() или PtUpdate() (эти две функции идентичны).

Для получения более полной информации об этих функциях см. "Справочник библиотечных функций Photon'а".

          1. Для конкретного контейнера

Библиотеки Photon'а используют "счётчик изменений", позволяющий Вам задерживать обновление изображения для конкретного контейнера. Когда счётчик изменений ненулевой и Вы модифицируете контейнер или его потомков, виджеты не помечаются как "повреждённые". Что происходит, когда значение счётчика изменений опять возвращается в ноль, зависит от того, какие функции Вы используете:

PtStartFlux()

PtEndFlux()

Когда счётчик изменений контейнера приходит в ноль, Вы должны явно повредить области, которые хотите восстановить.

PtContainerHold()

PtContainerRelease()

Когда счётчик изменений контейнера приходит в ноль, весь контейнер в целом помечается как повреждённый.

PtContainerHold() и PtContainerRelease() более простые в использовании, поскольку Вам не надо определять, какие виджеты или области Вам необходимо повреждать. Однако это может приводить к большему мерцанию, чем в случае использования функций PtStartFlux() и PtEndFlux(). Если Вам необходимо определить, находится ли контейнер или любой из его родителей в текущий момент в изменении, используйте PtIsFluxing().

Для получения более полной информации по этим функциям см. "Справочник библиотечных функций Photon'а".

          1. Принудительное обновление

Для немедленного обновления повреждённых областей изображения Вы можете в любой момент использовать вызов функции PtFlush(). Функция PtFlush() игнорирует счётчик удержаний и не изменяет его значение. Если контейнер находится в изменении и Вы модифицируете его или его потомков, библиотеки Photon'а не помечают виджеты как повреждённые, так что функция PtFlush() не будет их восстанавливать.

 Комбинирование удержаний для всего приложения, удержание контейнеров и вызовов функции PtFlush() может дать непредсказуемый результат. Например, если Вы удерживаете всё приложение, повреждаете часть контейнера, удерживаете контейнер, модифицируете его, и затем вызываете функцию PtFlush(), библиотеки восстановят повреждение – отобразив какую бы то ни было порцию модификации, которая оказала воздействие на повреждённую область.

Соседние файлы в папке Литература