* Как при длительном лоадере не позволять движку встать на паузу при уходе фокуса с окна итд ?
08 августа 2016 17:56
Как при длительном лоадере не позволять движку встать на паузу при уходе фокуса с окна итд ?
пример , загружается страничка.. идет бар % ( встроенный лоадер) если
в это время переключиться с окна то и лоадер и приложение встает на паузу и возобновляется только после перехода обратно к окну..
а по идее логики должно загрузиться и только потом выполнив 1й кадр встать на паузу
подскажите можно ли обойти ну и если это все именно так то может лоадеру добавить параметр управления паузой? ( с паузой или без паузы)
спасибо.
пример , загружается страничка.. идет бар % ( встроенный лоадер) если
в это время переключиться с окна то и лоадер и приложение встает на паузу и возобновляется только после перехода обратно к окну..
а по идее логики должно загрузиться и только потом выполнив 1й кадр встать на паузу
подскажите можно ли обойти ну и если это все именно так то может лоадеру добавить параметр управления паузой? ( с паузой или без паузы)
спасибо.
Денис
10 августа 2016 19:32
Чуть чуть разобрался и мне кажется тут дело вот в чём:
Для загрузки ресурсов нужно что бы крутился цикл loop(), он, грубо говоря, вешается на метод браузера setTimeout(), который перестаёт срабатывать на неактивной вкладке. След-но и загрузка сцены не идёт… Надо подумать как дёргать метод в неактивной вкладке по таймеру…
Для загрузки ресурсов нужно что бы крутился цикл loop(), он, грубо говоря, вешается на метод браузера setTimeout(), который перестаёт срабатывать на неактивной вкладке. След-но и загрузка сцены не идёт… Надо подумать как дёргать метод в неактивной вкладке по таймеру…
Не стой, где попало… Попадет еще раз.
http://naviris.ru/
http://naviris.ru/
10 августа 2016 19:38
Ответ на сообщение пользователя Кирилл
Чуть чуть разобрался и мне кажется тут дело вот в чём:
Для загрузки ресурсов нужно что бы крутился цикл loop(), он, грубо говоря, вешается на метод браузера setTimeout(), который перестаёт срабатывать на неактивной вкладке. След-но и загрузка сцены не идёт… Надо подумать как дёргать метод в неактивной вкладке по таймеру…
возможно и так .. только думаю тут дело в прелоадере который работает как обычный рендер сцены и если есть использовать паузу то вот и результат
Денис
10 августа 2016 19:53
Прелоадер это отдельный компонент. Он выводит загрузку не в canvas а отдельный dom элемент, но опирается на цикл loop().
Браузер специально приостанавливает эти временные колбеки по таймеру для оптимизации, походу тут ничего не сделаешь. Только переписывать модуль загрузки ресурсов в движке b4w…
А вот раньше такого "костыля" в браузере небыло…
Браузер специально приостанавливает эти временные колбеки по таймеру для оптимизации, походу тут ничего не сделаешь. Только переписывать модуль загрузки ресурсов в движке b4w…
А вот раньше такого "костыля" в браузере небыло…
Не стой, где попало… Попадет еще раз.
http://naviris.ru/
http://naviris.ru/
10 августа 2016 20:01
Ответ на сообщение пользователя Кирилл
Прелоадер это отдельный компонент. Он выводит загрузку не в canvas а отдельный dom элемент, но опирается на цикл loop().
Браузер специально приостанавливает эти временные колбеки по таймеру для оптимизации, походу тут ничего не сделаешь. Только переписывать модуль загрузки ресурсов в движке b4w…
А вот раньше такого "костыля" в браузере небыло…
все развивается )
пробелма осталась.. и ее очень видно на моих проектах
Денис
11 августа 2016 09:39
Добрый день.
Извиняюсь за запоздалый ответ, проглядел
Передайте параметр pause_invisible : false в функцию app.init
После этого, когда вы переключаете вкладку сцена будет активничать. Если вы хотите, чтобы сцена не активничала после того как вы загрузили её и переключили вкладку, то сделайте дополнительно следующее действие:
в load_cb к примеру вызовите вот эту функцию:
Извиняюсь за запоздалый ответ, проглядел
Передайте параметр pause_invisible : false в функцию app.init
После этого, когда вы переключаете вкладку сцена будет активничать. Если вы хотите, чтобы сцена не активничала после того как вы загрузили её и переключили вкладку, то сделайте дополнительно следующее действие:
в load_cb к примеру вызовите вот эту функцию:
function handle_page_visibility() {
var was_paused = m_main.is_paused();
var visibility_change = function() {
if (document.hidden) {
was_paused = m_main.is_paused();
m_main.pause();
} else if (!was_paused)
m_main.resume();
}
document.addEventListener("visibilitychange", visibility_change, false);
}
11 августа 2016 12:20
Ответ на сообщение пользователя Семенцов Роман
Добрый день.
Извиняюсь за запоздалый ответ, проглядел
Передайте параметр pause_invisible : false в функцию app.init
После этого, когда вы переключаете вкладку сцена будет активничать. Если вы хотите, чтобы сцена не активничала после того как вы загрузили её и переключили вкладку, то сделайте дополнительно следующее действие:
в load_cb к примеру вызовите вот эту функцию:function handle_page_visibility() { var was_paused = m_main.is_paused(); var visibility_change = function() { if (document.hidden) { was_paused = m_main.is_paused(); m_main.pause(); } else if (!was_paused) m_main.resume(); } document.addEventListener("visibilitychange", visibility_change, false); }
не совсем понятно.. про то что можно вначале до первого рендера сцены
сделать без паузы ясно, а вот как определить прохождение первого рендера?
как я понял прелоадер исполняется в том же цикле как и рендер т.е. каждый кадр прелоадера по факту рендер уже,
верно?
Денис
11 августа 2016 14:32
11 августа 2016 14:54
Ответ на сообщение пользователя Семенцов Роман
Можно сказать и так, только на этапе загрузки подготавливаются данные для рендеринга. Т.е. фактически сам рендеринг начинается по завершению загрузки
ранее была тема что у меня в этом проекте рендеринг принудительно ограничен 1 к\с соотв. у меня была проблема с
прелоадером который грузился бесконечно долго из за этого.. и сделан небольшой обход , на этапе прелоадера 60к\с потом перекл на 1к\с .. кроме того я вроде как использую паузу далее .. а как все-же седалть так что б пауза во время начала работать и к.с не сбились?
Денис