Forum

User posts Ivan Lyubovnikov
04 August 2016 18:44
интересно а так сразу если подрят выполнить должно сработать?
нет, resume сам по себе мало, что делает, а max_fps учитывается только в цикле requestAnimationFrame, который вызывается асинхронно
02 August 2016 11:56
После выполнения команды resume() обновление картинки происходит не моментально, а только после наступления по таймингу обновления следующего кадра. Наверное из за этого вы и видите предыдущий кадр.

так и есть, собственно, вот строчки, где это происходит:
main.js
в случае ограничения в 1фпс шкала времени будет разбита на интервалы длиной в 1 сек; в том условии проверяется delta - время прошедшее с предыдущей отметки, момент resume попадает в произвольное место этого интервала и задержка может доходить до целой секунды, как повезет

отелось бы без костыликофф ((( обойтись тем более что разработчики тут где то есть, надеюсь услышат и ответят
сейчас вряд ли, ограничение фпс использовалось только для отладки, поэтому оно непроработанное; в будущем, думаю, перепишем это место

Костыль с выставлением >60 фпс должен нормально сработать.
02 August 2016 10:47
В общем я заметил, что при установки паузы, метод, повешенный с помощью append_loop_cb() продолжает выполняться, что наверное не очень логично, и меня удивило
а вот не надо удивляться:
Append a callback to be executed every frame (even if the rendering is paused). Its purpose is to perform actions non-related to the actual rendering, e.g html/css manipulation. This method allows registration of multiple callbacks.
append_loop_cb

есть ещё render_callback, с ним работают методы set_render_callback и clear_render_callback, на него как раз пауза и будет действовать как нужно

Однако ещё заметил, что если вкладка не активна, то append_loop_cb() останавливается… Чувствую, где то в коде есть ещё одна пауза, которая отключает и append_loop_cb()
остановку делает сам браузер
01 August 2016 17:28
Hi, splinter86.

Although we didn't reproduce this issue, we figured out what's wrong with the game. We found a bug related to the engine loader, which can show up when the logic nodes are used. Sometimes (especially for a slow internet connection) this breaks the whole application.
Thank you for the feedback, we will make a fix prior to the next release.

My new game will have these kind of problem in the start process?
Maybe… if you'll use the logic nodes, but the coming fix should remove the problem.
29 July 2016 18:42
however, we're thinking about a workaround for such devices
29 July 2016 18:29
пробую, но пока безрезультатно вроде как не заходит в процедуру почему то… может быть так, что такое событие не поддерживается?
проблема, определенно, в той ошибке
29 July 2016 18:27
"B4W ERROR: device hasn't param: 130"
видимо, в апишном методе attach_param_cb не проходит проверка:
exports.attach_param_cb = function(device, param, cb) {
    if (device && device.type in ASYNC_PARAMS &&
            ASYNC_PARAMS[device.type].indexOf(param) >= 0)
        return m_input.attach_param_cb(device, param, cb);
    else
        m_print.error("device hasn't param: ", param);
}

device должен быть валидный и иметь тип m_input.DEVICE_GYRO
28 July 2016 11:23
а вот зачем тогда в JSON файле ссылка на блендер файл
он нужен только для вывода в некоторых собщениях об ошибке, чтобы сразу можно было понять, какой файл нужно пофиксить или переэкспортировать, например:

B4W WARN: Property "diffuse_fresnel" is undefined for "material". To fix this, reexport ../../../blender/misc/logo.blend
27 July 2016 10:45
что то не пойму , а что будет ДОМ элементом ?
т.к. - "TypeError: m_input.get_device_by_type is not a function"
АПИ : "get_device_by_type_element(type, element)"
да, get_device_by_type - опечатка, должно быть get_device_by_type_element;
вообще, это элемент, на котором должны отслеживаться события, для гироскопа это не актуально, поэтому не нужно ничего подавать; в документации, правда, это не отражено - поправим

а вот тут может етсь где пример использования с углами?
а чточто то не пойму сразу как подобраться к резульатту ((
код будет такой:
var gyro_device = m_input.get_device_by_type_element(m_input.DEVICE_GYRO);
m_input.attach_param_cb(gyro_device, m_input.GYRO_ORIENTATION_ANGLES, function(angles) {
    var alpha = angles[0];
    var beta = angles[1];
    var gamma = angles[2];
})


углы альфа, бета, гамма из стандарта:
DeviceOrientation Event Specification
25 July 2016 17:25
про ТАРГЕТ у спота не понятно по какой причине его нет.. по идее он и в блендре и в других редакторах всегда присутсвует
в блендере у лампочки есть поворот, как и у любого другого объекта - он уже определяет направление конуса света, поэтому таргет в качестве свойства лампы был бы избыточен

если вы о констрейнтах, например, Track To, то он у нас не поддерживается

var gyro_device = m_input.get_device_by_type(m_input.DEVICE_GYRO)
m_input.attach_param_cb(gyro_device, m_input.GYRO_ORIENTATION_QUAT, function(quat) {
// где quat – актуальный кватернион поворота, который пришёл с гироскопа
// пишем здесь логику перемещения лампочки, см. ниже
})
- этот вариант даже, наверное, попроще будет, чем через сенсоры, можно ещё m_input.GYRO_ORIENTATION_QUAT заменить на m_input.GYRO_ORIENTATION_ANGLES, тогда в обработчик будут приходить эйлеровские углы, смотря, что удобнее