User posts Kirill
31 January 2016 08:42
Обнаружил что форум заменяет ссылки на html код ссылки внутри тега code, что иногда портит код.
Например сейчас напишу
<a href="http://www.blend4web.com">Ссылка</a>
Как этот текст выглядит в теге code
Например сейчас напишу
<a href="http://www.blend4web.com">Ссылка</a>
Как этот текст выглядит в теге code
<a href="http://www.blend4web.com">Ссылка</a>
31 January 2016 08:27
Ответ на сообщение пользователя halingjiМожет быть в качестве временного способа вам подойдёт способ с якорями?
Обоими способами пробовала, никак… видимо не судьба, буду ждать обнову х)
По поводу рамки…
Если вы вставляете на страницу при помощи тега iframe, то у него по умолчанию отображается рамка. Можете в стилях указать следующие "border: none; border-radius: 10px;", и тогда элемент будет отображаться без рамок и с округлёнными краями.
Пример:
<iframe src="scena.html" style="border: none; border-radius: 10px;"></iframe>
30 January 2016 16:01
А теоретически можно заставить blend4web рисовать такой шейдер, я немножко офигел, когда увидел такое в реалтайме
30 January 2016 15:07
Ответ на сообщение пользователя Семенцов РоманПочитав о тачах, выяснил что в массиве event.touches находятся координаты всех касаний на экране. А в массиве event.targetTouches находятся касания к текущему DOM элементу.
С мультитачем надо быть аккуратным, не все мобильные девайсы его поддерживают. Лучше добавить небольшую проверку на его наличие.
В примере я не учел использование мультитача, у меня перед глазами в этот момент стояло приложение-раннер от третьего лица. Вообще для использования мультитача надо обрабатывать массив с координатами нажатий (event.touches) и смотреть, какое из них должно поворачивать камеру.
Посмотрел в /src/addons/mouse.js функции get_coords_x, get_coords_y возвращаются координаты первого касания из общего массива event.touches. Заменив это на event.targetTouches я получил "псевдо мультитач", так как элементы управления не являются детьми канваса (в моём случае), то b4w теперь обрабатывает только касания по канвасу.
Чуть модифицировал аддон mouse.js, добавил пару методов.
И уже по традиции видео работы
30 January 2016 12:33
Подскажите, как правильно преобразовать значения с датчика ориентации для передачи их камере. Ещё хотелось бы, что бы камера наклонялась по отношению к горизонту.
Попробовал использовать такую конструкцию:
Работает, но естественно не правильно
Попробовал использовать такую конструкцию:
function load_cb(data_id) {
m_app.enable_controls();
//m_app.enable_camera_controls();
// place your code here
var camobj = m_scs.get_active_camera();
if (window.DeviceOrientationEvent) {
window.addEventListener("deviceorientation", function(event)
{
var xValue = event.gamma;
var yValue = event.beta;
var Rotation = event.alpha;
//console.log({xValue:xValue,yValue:yValue,Rotation:Rotation});
//console.log(m_trans.get_rotation(camobj));
m_cam.rotate_camera(camobj, xValue/(-180/Math.PI), (yValue+90)/(90/Math.PI), true, true);
}, true);
}
}
Работает, но естественно не правильно
28 January 2016 09:13
Хм, теперь появилась проблемка с мультитачем. Пока зажата кнопка направления движения (touchstart) b4w игнорирует жесты управления камерой. После отжатия кнопки (touchend) жесты продолжают работать.
видео
Сегодня буду изучать логику событий тачей
видео
Сегодня буду изучать логику событий тачей
28 January 2016 09:10
Хм, теперь появилась проблемка с мультитачем. Пока зажата кнопка направления движения (touchstart) b4w игнорирует жесты управления камерой. После отжатия кнопки (touchend) жесты продолжают работать.
видео
Сегодня буду изучать логику событий тачей
видео
Сегодня буду изучать логику событий тачей
28 January 2016 00:43
Ответ на сообщение пользователя Семенцов РоманБольшое спасибо! Изучил, попробовал связать поинтерлок и приведённый обработчик тача в один проект,
Посмотрите как просто выглядит пример для декстопа.
Для мобильника пришлось повозиться. Вот пример сырой версии, подойдет в качестве отправной точки для создания своего обработчика тача: test.zip
Разобрался! Ещё раз спасибо за приведённые примеры, теперь всё работает как задумано
Ответ на сообщение пользователя Семенцов РоманСпасибо, попробую и так. Действительно поставил вызов этой функции перед инициализацией сцены. Рядом, с функцией m_app.enable_controls(), просто потому что из одного модуля, и названия почти схожи.
Кстати по поводу ошибок из консоли, вызывайте функциюm_app.enable_camera_controls()
в момент load_cb. Ей нужна камера, чтобы навесить на нее сенсоры. А камера доступна, когда уже загружена сцена
27 January 2016 13:50
m_app.enable_camera_controlsНе заработал. Выдал такие ошибки
b4w.min.js:324 B4W ERROR: No active scened @ b4w.min.js:324a.get_active_camera @ b4w.min.js:1987u @ b4w.min.js:2049init_cb @ example.js:31e @ b4w.min.js:2063
b4w.min.js:324 B4W ERROR: get_move_style(): Wrong camera objectd @ b4w.min.js:324a.get_move_style @ b4w.min.js:1890u @ b4w.min.js:2049init_cb @ example.js:31e @ b4w.min.js:2063
b4w.min.js:324 B4W ERROR: get_velocities(): Wrong camera object
Пробовал функцию на этом примере
Если подкините пример кода для реализации поворта камеры вместе с направлением персонажа тачем (что бы после поворота камеры он продолжал идти прямо при нажатии кнопки W) этого примера, буду очень признателен. А пока что пользуюсь сенсорами touch_move.
27 January 2016 08:53
Ответ на сообщение пользователя Семенцов Роман
Если вы про управление камерой на мобильном девайсе, то эти алгоритмы заложены в аддона app.js. Вас должны интересовать функции, в названии которых есть слово touch. Обработчики у нас там реализованы через сенсоры модуля controls.js
Надеюсь, я правильно понял ваш вопрос
Вы меня правильно поняли, смотрел в доки и в исходники по слову Touch. Пробовал разобраться, но пока не вышло. В итоге пока что набросал такую конструкцию:
//События тача
var camobj = m_scs.get_active_camera();
var touchmove_sensor_x = m_ctl.create_touch_move_sensor('X');
var touchmove_sensor_y = m_ctl.create_touch_move_sensor('Y');
var touchmove_sensor_xy = m_ctl.create_touch_move_sensor();
var coord_touch = {x:0,y:0};
m_ctl.create_sensor_manifold(null, "TOUCH_MOVE", m_ctl.CT_LEVEL, [touchmove_sensor_xy, touchmove_sensor_x, touchmove_sensor_y],
function(s){
coord_touch.x = s[1];
coord_touch.y = s[2];
return s[0];
}, sobitie_touch);
function sobitie_touch(obj, id, pulse, param) {
console.log({coord_touch_x:coord_touch.x ,coord_touch_y:coord_touch.y});
m_cam.rotate_eye_camera(camobj, coord_touch.x/(-500), coord_touch.y/(-500));
}