Смена профиля качества приложения !
27 сентября 2017 08:30
Уважаемые спецы ! выкурил мануалы и форум не нашел решения, обращаюсь с небольшим писком о помощи. Есть хтмл кнопочки для выбора качества подвязываю на m_cfg.set("quality", m_cfg.P_LOW); и т.д само качество должно попасть в конфиг до инициализации сцены значит при смене качества сцену нужно переинициализировать с новыми параметрами, если вызову рефреш всей страницы все слетит в дефолт.. так вот как без перезагрузки страницы вызвать перезагрузку самой сцены с новым профилем качества ?? если можно маленький пример
Жираф это лошадь в техзадании заказчика
28 сентября 2017 11:03
Можно, например, добавить в главный модуль приложения такую функцию reload:
- здесь exports.init() - стандартный метод, с которого начинается инициализация модуля, туда можно подать настройки качества для переинициализации.
var m_app = require("app");
var m_cfg = require("config");
var m_cont = require("container");
var m_main = require("main");
...
exports.init = function(quality) {
quality = quality || m_cfg.P_HIGH;
m_app.init({
canvas_container_id: "main_canvas_container",
callback: init_cb,
show_fps: DEBUG,
console_verbose: DEBUG,
autoresize: true,
quality: quality
});
}
...
function reload() {
var container = m_cont.get_container();
m_main.reset();
while (container.firstChild)
container.removeChild(container.firstChild);
exports.init(m_cfg.P_LOW);
}
- здесь exports.init() - стандартный метод, с которого начинается инициализация модуля, туда можно подать настройки качества для переинициализации.
28 сентября 2017 11:11
А ещё можно использовать аддон storage.js, чтобы сохранять значения настроек в window.localStorage - так сделано в Веб-плеере и ряде других приложений, тогда перезагрузка не будет страшна.
28 сентября 2017 17:38
function reload() {
var container = m_cont.get_container();
m_main.reset();
while (container.firstChild)
container.removeChild(container.firstChild);
exports.init(m_cfg.P_LOW);
}
что делает reset в данном случае ??
в цикле я так понимаю дочерние элементы сцены удаляем передавая в модуль конфиг, то есть те объекты что в сцену уже были добавлены ранее слетают ?
var container = m_cont.get_container();
m_main.reset();
while (container.firstChild)
container.removeChild(container.firstChild);
exports.init(m_cfg.P_LOW);
}
что делает reset в данном случае ??
в цикле я так понимаю дочерние элементы сцены удаляем передавая в модуль конфиг, то есть те объекты что в сцену уже были добавлены ранее слетают ?
Жираф это лошадь в техзадании заказчика
28 сентября 2017 17:40
28 сентября 2017 17:51
28 сентября 2017 17:53
28 сентября 2017 18:01
что делает reset в данном случае ??выгружает сцену и подчищает используемые ресурсы, вроде различных кешей, webgl-контекста и т.д.
в цикле я так понимаю дочерние элементы сцены удаляем передавая в модуль конфиг, то есть те объекты что в сцену уже были добавлены ранее слетают ?а какие объекты? это же просто HTML-элементы, удаляется все DOM-содержимое контейнера, т.е. приводится к виду как было, до инициализации движка
интересное решение storage раньше не встречал…. открытие дня просто, спс за наводку !!!storage.js - это обертка со стороны движка для window.localStorage - можно и напрямую им пользоваться, если удобнее
quality = quality || m_cfg.P_HIGH; если не передали значение в quality определяем его по умолчанию правильно ??да, просто какое-то значение по умолчанию
28 сентября 2017 18:33