Действие с объектом при наведении курсора мыши
17 ноября 2015 15:47
Что-то я совсем заморочился, не могу сам разобраться… не поможете?
я хочу чтобы при наведении курсора на объект что- то произошло, ну например, чтобы другой объект подвинулся.
пишу:
То есть смысл в чем. При наведении на объект объект определился, произошло действие, курсор передвинулся на пиксель, объект опять определился - и опять действие…
с элементами страницы работает onmouseover, а как с объектами такое реализовать?
может в движке уже специальные функции для этого?
посмотрел, может сенсоры, нифига не понял
я хочу чтобы при наведении курсора на объект что- то произошло, ну например, чтобы другой объект подвинулся.
пишу:
canvas_elem.onmousemove = main_canvas_onmousemove;
...
function main_canvas_onmousemove (e) {
var x = e.clientX;
var y = e.clientY;
var objME = m_scenes.pick_object(x, y);
if (objME) {
//пытался определить, что этот объект уже был выделен, _previous_selected_obj глобальная //переменная
if (objME != _previous_MouseBottom_obj) {
_previous_selected_obj = objME;
console.log(m_scenes.get_object_name(objME));
}
То есть смысл в чем. При наведении на объект объект определился, произошло действие, курсор передвинулся на пиксель, объект опять определился - и опять действие…
с элементами страницы работает onmouseover, а как с объектами такое реализовать?
может в движке уже специальные функции для этого?
посмотрел, может сенсоры, нифига не понял
Дорогу осилит идущий
17 ноября 2015 16:58
а как с объектами такое реализовать?
Ну, по-идее также, как и с элементами страницы:
1. При наведении курсора-
var objME = m_scenes.pick_object(x, y);
2. Далее можно проверить, тот ли это объект, который нужен.
m_scenes.get_object_name(objMe);
if(objMe =="ObjectName"){
-Делай раз-
}else{
-Ничего не делай-
}
А чтобы постоянно производилось действие, пока курсор на объекте, тут либо сенсоры, либо обернуть функцию в конструкцию setTimeout.
Тогда покуда onmouseover = TRUE, будет выполняться действие с задержкой, заданной в миллисекундах.
setTimeout(function(){
.......
Какое-то действие.
........
}, 1000); //задержка в милkисекундах
Но на практике последний вариант у меня выдавал неоднозначные результаты- наложение нажатий друг на друга.
Коплю деньги на коммерческий B4W.
17 ноября 2015 17:03
17 ноября 2015 17:13
сообщений: 43Я правильно понял:
ну да, он равен. сместил на пиксел - и он тоже равен - и опять делает, еще на пиксел - и опять равен
1. наводим мышку на кубик1
2. Пока мышка на кубике1, двигается кубик2
3. Убираем мышку с кубика1- движение кубика2 прекращается.
Коплю деньги на коммерческий B4W.
17 ноября 2015 17:14
обернуть функцию в конструкцию setTimeout.
Тогда покуда onmouseover = TRUE, будет выполняться действие с задержкой, заданной в миллисекундах.
setTimeout(function(){
…….
Какое-то действие.
……..
}, 1000); //задержка в милkисекундах
Но на практике последний вариант у меня выдавал неоднозначные результаты- наложение нажатий друг на друга.
Коплю деньги на коммерческий B4W.
17 ноября 2015 17:18
2. Пока мышка на кубике1, двигается кубик2
нет… в том то и дело, что должно сработать только один раз, как onmouseover, то есть когда курсор зашел на элемент, ну и соответственно потом когда ушел с него.
Наведите курсор на смайлик справа от окна сообщения - он подсветится, уберите - он не светится) примерно то же самое
Дорогу осилит идущий
17 ноября 2015 17:49
когда курсор зашел на элемент, ну и соответственно потом когда ушел с него.
Здесь нужно добавлять к canvas EventListener "mouseover" и запускать функцию Вашу.
Я вижу это так:
canvas_elem.addEventListener("mouseover", move_cube){}
.........
function move_cube(){
var objME = m_scenes.pick_object(x, y);
var objName = m_scenes.get_object_name(objMe);
if(objName =="Cube1"){
-Делай раз-
}else{
-Ничего не делай-
}
}
Я это так вижу.
Коплю деньги на коммерческий B4W.
17 ноября 2015 17:54
17 ноября 2015 18:00
17 ноября 2015 18:16
Ответ на сообщение пользователя Dragon3DGraff
нет… в том то и дело, что должно сработать только один раз, как onmouseover, то есть когда курсор зашел на элемент, ну и соответственно потом когда ушел с него.
Наведите курсор на смайлик справа от окна сообщения - он подсветится, уберите - он не светится) примерно то же самое
Посмотрите реализацию функции enable_mouse_hover_outline (и objects_outline) из mouse.js. Вы описали ее действие в этом сообщении