Обновление веб-браузера Windows Phone 7 происходит слишком медленно - PullRequest
0 голосов
/ 13 февраля 2012

У меня есть Windows Phone 7 Silverlight с приложением XNA. Я также использую сервис, который использует JavaScript для рендеринга динамических изображений на экран.

На ПК javascript плавный и плавный, я могу плавно переходить между изображениями и их переходами. Однако мне нужно донести эту функциональность до телефона.

На данный момент мне удалось использовать элемент управления веб-браузера в Silverlight, чтобы загрузить мой HTML-файл и выполнить скрипт. Проблема заключается в том, что после запуска «динамической» части приложения веб-элемент управления обновляется недостаточно быстро. Вместо плавной анимации скольжения, которая приводит к версии для ПК, я заикаюсь, как в игре с низким FPS.

Итак, мне интересно: есть ли способ увеличить частоту обновления элемента управления веб-браузера?

Еще одна мысль, которая у меня возникла (но не удалась при реализации), - встроить веб-браузер в страницу приложения XNA и использовать частоту обновления XNA, которая значительно выше (я полагаю, это стандарт 60). кадров в секунду). Однако элемент управления веб-браузера Silverlight, похоже, не имеет функции рендеринга обновлений, и я не могу найти библиотеку для встраивания веб-браузера в само приложение XNA.

Кто-нибудь знает, как я могу сделать так, чтобы мой динамический HTML-файл с javascript отображался плавно и плавно?

EDIT: webBrowser.InvalidateArrange (), использующий таймер со скоростью 30 FPS, похоже, ускорил обновление браузера, но он все еще нервный. Если я попытаюсь увеличить FPS, браузер снова станет медленным.

Ответы [ 2 ]

0 голосов
/ 18 февраля 2012

Используя таймер, установленный на 17 миллисекунд (60 FPS), я принудительно отключаю браузер, что вызывает его перерисовку.В дополнение к этому я исключил фреймы, в которых не нужно было перерисовывать браузер.

    DispatcherTimer timer = new System.Windows.Threading.DispatcherTimer();
    timer.Interval = new TimeSpan(0, 0, 0, 0, 17); // 30 FPS 
    timer.Tick += new EventHandler(timer_Tick);
    timer.Start();

    void timer_Tick(object sender, EventArgs e)
    {
        if (loaded && coded && needToUpdate)
        {
                webBrowser.InvokeScript("setPitch", pitch.ToString());
                webBrowser.InvokeScript("setHeading", heading.ToString());
                Redraw();

                needToUpdate = false;
        }
    }

    void Redraw()
    {
        webBrowser.InvalidateMeasure();
        webBrowser.InvalidateArrange();
        webBrowser.Visibility = System.Windows.Visibility.Visible;
    }
0 голосов
/ 13 февраля 2012

Я предполагаю, что это стандарт 60 кадров в секунду

стандарт составляет 30 кадров в секунду

Я не могу найти библиотеку для встраивания веб-браузера внутрисамо приложение XNA.

Я не думаю, что это даст какие-либо улучшения.

Итак, мне интересно: есть ли способ увеличить частоту обновления элемента управления веб-браузера??

  1. Создайте тестовое приложение, которое имеет только элемент управления веб-браузера на главной странице - убедитесь, что нет ресурсов, кроме ресурсов веб-управления.
  2. Проверьте, как работает приложение.Если это достаточно хорошо, уменьшите любую другую обработку в вашем приложении, пока пользователь использует «динамическую» часть
  3. Если производительность все еще остается низкой, единственное, что вы можете сделать, это оптимизировать сам javascript
  4. Если этопо-прежнему недопустимо вырезать функцию или сделать нативную.
  5. Прибыль!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...