Форум

Замена всей модели в main_canvas_container на другую

07 марта 2018 02:18
Здравствуйте!

Тип проекта: COPY.

HTML:
<head>
<link id="b4w_css" type="text/css" rel="stylesheet" href="/b4w/office001/office001.min.css?v=04032018190718">
<script id="b4w_script_b4w" type="text/javascript" src="/b4w/office001/b4w.min.js?v=0403201819071"></script>
<script id="b4w_script" type="text/javascript" src="/b4w/office001/office001.min.js?v=04032018190718"></script>
</head>
<body>
<div id="main_canvas_container"></div>
</body>

При нажатии некоторых кнопок должна происходить замена скриптов, вследствие чего происходит замена и самой модели. Но в действительности загружаются все скрипты, прелоадер доходит до 9?% и всё исчезает. Вот что мне кричит консоль:
B4W WARN: Chrome and Linux detected, disabling wasm physics.
[Violation] 'visibilitychange' handler took 166ms
[Violation] Forced reflow while executing JavaScript took 137ms

Скрипты грузятся по очереди, как указано в HTML. Последний скрипт загружается только тогда, когда появляется переменная b4w. Так что, вроде всё нормально, но почему выделывается при замене ссылок - не понятно. Вот просто выделывается и всё тут. Как загружаться по воле браузера при открытии странице - всё нормально., а как по моей (функцией JS) - так всё, караул.

Готов принять Вашу помощь и выслушать Ваши наставления, советы..
Не смейте предавать Ваши мечты!
08 марта 2018 00:15
При нажатии некоторых кнопок должна происходить замена скриптов, вследствие чего происходит замена и самой модели.

Т.е. вы динамически меняете тег script? Если ваш скрипт использует нотацию require и не указано вторым параметром специфичное для b4w так называемое пространство имен (namespace), то новый скрипт будет конфликтовать со старым. Для разрешения конфликта нужно использовать разные нэймспейсы. Однако обычно нэймспейсы используются, если например нужно на одной странице запустить несколько копий движка.
Для вашего же случая, насколько я понимаю, копий движка не требуется, а нужно просто по запросу загружать различные сцены. В таком случае лучше использовать функции load и unload модуля data. Правда если сцены у вас сильно отличаются по нагруженности эффектами, то некоторые объекты могут отображаться неправильно, мы сейчас работаем над этой проблемой.
Александр (команда Blend4Web)
twitter
08 марта 2018 01:41
Большое спасибо за ответ! Хм, метод load очень интересный, ещё и сцены шустро подгружаются, даже из других проектов.
Не смейте предавать Ваши мечты!
12 марта 2018 09:34
Хм, метод load очень интересный, ещё и сцены шустро подгружаются, даже из других проектов.
Он работает быстро потому что не происходит перестроения рендер графа. И к стати говоря, из-за этого и могут отключаться некоторые эффекты, о которых я писал, например динамические отражения.
Александр (команда Blend4Web)
twitter
 
Пожалуйста, зарегистрируйтесь или войдите под своей учетной записью , чтобы оставлять сообщения.