Динамическая загрузка
07 февраля 2017 11:18
Есть несколько моделей, нужно по нажатию кнопки загружать модель и выгружать предыдущую.
(также имеется одна модель которую не нужно выгружать)
но в процессе могут произойти ошибки (модель загрузилась несколько раз )
можно ли как то выгружать все модели кроме одного определенного?
(также имеется одна модель которую не нужно выгружать)
if(_current_model == null){
_current_model = m_data.load(_file_names[this.id], load_cb);
}else{
m_data.unload(_current_model);
_current_model = m_data.load(_file_names[this.id], load_cb, stageload_cb, true);
}
но в процессе могут произойти ошибки (модель загрузилась несколько раз )
можно ли как то выгружать все модели кроме одного определенного?
08 февраля 2017 11:38
Добрый день.
Сцены выгружаются по своему идентификатору, выгрузить все, кроме одной, можно из приложения, запоминая id загруженных сцен.
Я как-то делал подобное приложение, могу дать вам пару советов. На время загрузки модели лучше блокировать интерфейсную кнопку загрузки, чтобы нельзя было загрузить несколько одинаковым моделей. И разблокировать её по завершению загрузки. В таком случае не будет лишней путанницы с идентификаторами.
Вообще, если у вас есть простой пример приложения, можете скинуть, я могу посмотреть более детально
Сцены выгружаются по своему идентификатору, выгрузить все, кроме одной, можно из приложения, запоминая id загруженных сцен.
Я как-то делал подобное приложение, могу дать вам пару советов. На время загрузки модели лучше блокировать интерфейсную кнопку загрузки, чтобы нельзя было загрузить несколько одинаковым моделей. И разблокировать её по завершению загрузки. В таком случае не будет лишней путанницы с идентификаторами.
Вообще, если у вас есть простой пример приложения, можете скинуть, я могу посмотреть более детально
08 февраля 2017 12:25
Слегка модифицировал функцию смены сцены:
Добавил блокировку интерфейса до завершения загруки сцены
function button_index() {
var interface_is_active = true;
var scenes_load_cb = function(data_id, success) {
interface_is_active = true;
}
if(_file_loaded == true && interface_is_active){
_file_loaded = false;
interface_is_active = false;
if(_current_model == null){
_current_model = m_data.load(_file_names[this.id], scenes_load_cb, stageload_cb, true);
}else{
m_data.unload(_current_model);
_current_model = m_data.load(_file_names[this.id], scenes_load_cb, stageload_cb, true);
}
var description_text = document.getElementById("description_text");
description_text.textContent = _btn_description[this.id]
_file_loaded = true;
}
}
Добавил блокировку интерфейса до завершения загруки сцены
08 февраля 2017 13:05
08 февраля 2017 14:16
Извиняюсь, не обратил внимание, что вы уже используете переменную-состояние загруженной модели.
Проверил на двойной быстрый клик - работает, дайте знать если будет что-то не так
function button_index() {
var file_loaded = true;
var scenes_load_cb = function(data_id, success) {
file_loaded = true;
}
if(file_loaded){
file_loaded = false;
if(_current_model == null){
_current_model = m_data.load(_file_names[this.id], scenes_load_cb, stageload_cb, true);
}else{
m_data.unload(_current_model);
_current_model = m_data.load(_file_names[this.id], scenes_load_cb, stageload_cb, true);
}
var description_text = document.getElementById("description_text");
description_text.textContent = _btn_description[this.id]
}
}
Проверил на двойной быстрый клик - работает, дайте знать если будет что-то не так
08 февраля 2017 20:08
Вот рабочий код, может кому пригодится :)
Переписал ваш код немного (file_loaded должен быть за функцией)
Спасибо большое)
Переписал ваш код немного (file_loaded должен быть за функцией)
Спасибо большое)
var _file_loaded = true;
function button_index() {
var loaded_cb = function(data_id, success){
_file_loaded = true;
}
if(_file_loaded){
_file_loaded = false;
if(_current_model == null){
_current_model = m_data.load(_file_names[this.id], loaded_cb, null, true);
}else{
m_data.unload(_current_model);
_current_model = m_data.load(_file_names[this.id], loaded_cb, null, true);
}
}
}