По сенсорам
23 декабря 2016 02:28
Добрый вечер,
Разбираюсь с сенсорами и манифолдами. Уточните, насколько грузят систему сенсоры callback или elapsed сами по себе и при работе с модулем b4w.sfx.is_playing(obj) например?
Можно ли сделать проверку на каждый десятый кадр или каждые 100 мл.сек? Или это не принципиально по сравнению с общим перечнем задач компа или мобильника?
Разбираюсь с сенсорами и манифолдами. Уточните, насколько грузят систему сенсоры callback или elapsed сами по себе и при работе с модулем b4w.sfx.is_playing(obj) например?
Можно ли сделать проверку на каждый десятый кадр или каждые 100 мл.сек? Или это не принципиально по сравнению с общим перечнем задач компа или мобильника?
Алексей
23 декабря 2016 10:38
21 мая 2017 06:59
Здравствуйте! Задача запустить анимацию объекта при наведении курсора мыши на другой объект.
первое, что приходит в голову - проверка объекта под курсором мыши:
Навешанная на сенсор движения мыши
Но сенсор create_mouse_move_sensor срабатывает только при нажатой кнопке мыши, как быть?
первое, что приходит в голову - проверка объекта под курсором мыши:
var mouse_move_cb = function(obj, id, pulse) {
var obj = m_scenes.pick_object(event.offsetX, event.offsetY);
var obj_name = m_scenes.get_object_name(obj);
if (obj_name == 'object_name')
{
...
}
}
Навешанная на сенсор движения мыши
var MouseMove_sensor = m_ctl.create_mouse_move_sensor();
m_ctl.create_sensor_manifold(sensor_object, "MOUSE_MOVE", m_ctl.CT_CONTINUOUS, [MouseMove_sensor], function(s) { return s[0] }, mouse_move_cb);
Но сенсор create_mouse_move_sensor срабатывает только при нажатой кнопке мыши, как быть?
21 мая 2017 07:42
Как вариант сделал без использования сенсоров, так:
но оно срабатывает только раз на наведение и дает дикую просадку fps при работе
canvas_cont.onmousemove = function(e) {
var x = event.offsetX;
var y = event.offsetY;
var obj = m_scenes.pick_object(x, y);
var obj_name = m_scenes.get_object_name(obj);
if (obj_name == 'object_name')
{
alert ('object!');
}
}
но оно срабатывает только раз на наведение и дает дикую просадку fps при работе
22 мая 2017 12:13
Здравствуйте, сенсоры здесь действительно не нужны, подойдет стандартный обработчик mousemove. Стоит ещё проверять объект, возвращаемый функцией pick_object, т.к. при его отсутствии она вернет null и дальнейшие действия могут приводить к ошибкам:
var obj = m_scenes.pick_object(x, y);
if (obj) {
...
}
но оно срабатывает только раз на наведение и дает дикую просадку fps при работеmousemove должен срабатывать постоянно при движении мыши, дикой просадки тоже быть не должно. Покажите, что в консоли, есть ли какие-либо ошибки?
29 мая 2017 17:47