Форум

Переход по ссылке при клике на объекте

21 октября 2015 16:03
Добрый день! Начал изучать ваш фреймворк и в качестве первой задачи придумал себе такую:
По примеру blend4web_sdk_free\deploy\tutorials\examples\interactive_web_application\ хочу сделать 3Д меню, при клике на шарик - переход по ссылке. Но прочитал:
Цели разработки на 2015 год
Развитие функциональности NLA Script.
Мы планируем добавить возможность перехода на веб-страницы по нажатию мышью на объект…

Эта функция еще не реализована? Будет ли реализована и когда? :) стоит ли мне начинать эту задачу?:)
Дорогу осилит идущий
21 октября 2015 17:44

Эта функция еще не реализована? Будет ли реализована и когда? :) стоит ли мне начинать эту задачу?:)
Данный функционал уже реализован, вот посмотрите в документации.
Blend4Web и всё такое. Тридешу тридэ, моделю модели.
21 октября 2015 18:08
Спасибо за быстрый ответ
буду дерзать)

звиняйте, сам не увидел в документации, пребываю в шоке от потока получаемой информации
Дорогу осилит идущий
27 октября 2015 09:24
а можно ли данную команду из скрипта запустить? то есть у вас есть пример с камешками, я хочу при нажатии камешка после анимации перейти по ссылке
if (obj) {
        if (_previous_selected_obj) {
            m_anim.stop(_previous_selected_obj);
            m_anim.set_frame(_previous_selected_obj, 0);
        }
        _previous_selected_obj = obj;

        m_anim.apply_def(obj);
        m_anim.play(obj);
//тут хочу перейти по ссылке
    }
}

и как узнать имя объекта, по которому я кликнул?
get_object_name(obj) нашел)
то есть m_scenes.get_object_name(obj) ?
Дорогу осилит идущий
27 октября 2015 09:57
function main_canvas_down(e) {

// подхватываем объект по координатам клика
    var x = m_mouse.get_coords_x(e);
    var y = m_mouse.get_coords_y(e);
    var obj = m_scenes.pick_object(x, y);

    var url = "";
    if (obj)
        switch(m_scenes.get_object_name(obj)) { // взяли имя и смотрим куда будем переходить
        case "NAME1":
           url=URL1;
            break;
        case "NAME2":
           url=URL2;
            break;
        case "NAME3":
            url=URL3;
            break;
        case "NAME4":
           url=URL4;
            break;
        }
    if (url) // значит что было нажатие на нужный объект
         m_anim.play(obj, function(){window.open(url);});
}
27 октября 2015 10:05
Вот спасибо!
так быстро и подробно ответили. Мне у вас все больше нравится

…до такой строчки
  m_anim.play(obj, function(){window.open(url);});

в жизни бы не додумался….
Дорогу осилит идущий
27 октября 2015 10:11
Так в документации можно посмотреть список функци и их параметры.

Кстати, написал вам код с учетом того, что на всех интересуюищих вас объектах заранее применена анимация:
    m_anim.apply(obj_1, "anim_name_from_blender_1");
    m_anim.apply(obj_2, "anim_name_from_blender_2");
    m_anim.apply(obj_3, "anim_name_from_blender_3");
27 октября 2015 10:40
я начинающий программист javaScript только начал изучать и документацию мне пока сложно переваривать) наверно теоретической базы программиста все таки не хватает))

Кстати, там не помешал бы поиск
Например get_object_name я искал в objects, и не сразу нашел, что он в scenes… а так я бы набрал name или object_name и нашел бы
Дорогу осилит идущий
10 ноября 2015 11:27

Кстати, написал вам код с учетом того, что на всех интересуюищих вас объектах заранее применена анимация:

m_anim.apply(obj_1, "anim_name_from_blender_1");
m_anim.apply(obj_2, "anim_name_from_blender_2");
m_anim.apply(obj_3, "anim_name_from_blender_3");

тут указано имя анимации? а как его задать?
Как сделать, чтобы анимация проигралась один раз, а не зацикленно? Разобрался сам m_anim.cyclic(obj, false);
Можно ли сделать у одного объекта разные анимации и по условию запускать нужную?
Дорогу осилит идущий
10 ноября 2015 12:26
Здравствуйте,
Можно ли сделать у одного объекта разные анимации и по условию запускать нужную?
Можно, с помощью метода apply():

m_anim.apply(my_obj, "my_anim_name_from_blender");
Руководитель проекта | VK | Twitter | Facebook | Linkedin
 
Пожалуйста, зарегистрируйтесь или войдите под своей учетной записью , чтобы оставлять сообщения.