Слишком медленное движение холста на веб-сайтах Blackberry - PullRequest
0 голосов
/ 21 апреля 2011

Привет Я написал анимацию холста, используя htlm5 и JavaScript. Движение почти нормально при работе в моем браузере Windows. Но когда я собираю его и запускаю на мобильном телефоне Blackberry, уменьшение движения может быть в десять раз меньше. Как я могу сделать для этого представления? Более того, я использую форму ввода, чтобы позволить пользователям изменять размеры графики. Но как только значения изменяются в текстовом поле, размер графика изменяется. Как я могу изменить его размер только при нажатии кнопки?

Ответы [ 2 ]

1 голос
/ 05 ноября 2011

Проблема может быть связана с производительностью JS ИЛИ рисованием на холсте или обоими. Сделайте следующее:

1) Запустите функцию JS, не связанную с рисованием, тысячу раз или что-либо еще в браузере BB и посмотрите, как она работает. Некоторые действия JS занимают много времени. Если все в порядке, то проблема в картине.

2) проблема с тегом BB Canvas заключается в том, что его очистка и рендеринг (т. Е. Когда вы останавливаете рисование на устройстве BB, сбрасывает его на экран) выполняются медленно. Фактический процесс вызова функций рисования на холсте не медленный. Кроме того - если вы перемещаете холст, BB очень сильно рвет, возможно, он перераспределяет целые буферы, поэтому он будет медленным.

Параметры:

  • замедлите скорость анимации - очень много. Если вы перерисовываете весь виджет много раз в секунду - это не сработает.
  • уменьшите холст до минимума. У крошечного холста проблем не будет. Холст размером с экран занимает одну секунду, чтобы очистить, и, возможно, 1/5 секунды, чтобы нарисовать.
  • не очищайте никакую часть холста, если нужно.

Все это может означать создание совершенно новой формы рисования ... К сожалению, HTML 5 на BB просто не подходит для анимации. Я настоятельно рекомендую использовать обычные изображения, а затем перемещать / заменять изображения по мере необходимости, используя обычное позиционирование старого HTML-элемента div для создания анимации.

0 голосов
/ 21 апреля 2011

Ваш код оптимизирован?У меня была похожая проблема с использованием JQuery для определения местоположения, примерно 5000 раз это заняло 30 секунд.на ipad я изменил код с

pos2 = jQuery('#n_'+Counter3).position().top; 
to
pos2 = document.getElementById('n_'+Counter3).offsetTop;

, и теперь это занимает меньше десяти 1 сек.

jQuery, вероятно, проверяет разные браузеры, поскольку некоторые используют смещение, некоторые говорят top и т. д.правильное значение каждый раз, когда вам не нужно беспокоиться о браузере (но, вероятно, javascript должен выполнить кучу операторов if x 5000).

В моем случае я нацелился на IPad, вы идете на Blackberry, поэтому оптимизация может ускорить процесс, не беспокоясь о кроссбраузерной совместимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...