Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Смещение мыши (http://www.flasher.ru/forum/showthread.php?t=147158)

Andrei0077 27.11.2010 19:19

Смещение мыши
 
Как написать "если мышь движется вверх, то..." ?

КорДум 27.11.2010 19:20

Поставить таймер, в нем смотреть разницу между прошлым положением мыши и новым.

spooner 27.11.2010 19:22

Цитата:

Сообщение от КорДум (Сообщение 952966)
Поставить таймер, в нем смотреть разницу между прошлым положением мыши и новым.

Зачем таймер? MouseMove есть

КорДум 27.11.2010 19:27

Тьфу, канешна же есть. То же, что я сказал, только через mouseMove. И да, судя по всему, вам надо только мышку вертикально вверх, так что, предугадывая, скорее всего, вам нужно будет смотреть еще и координату по иксу, то есть, ее минимальное отклонение.

Andrei0077 27.11.2010 20:44

Логически понятно - при движении мыши начать отчёт и сравнивать координаты. Не соображу, как технически это сделать.

i.o. 27.11.2010 20:54

ну вводишь две переменные (типа Point) - одна хранит старое значение положения мышки, а вторая - текущее.
При onMouseMove записываешь старое значение из текущего, а в текущее записываешь mouseX и mouseY.
Вот на основании этого и делаешь выводы, куда юзер потянул мыша.

КорДум 27.11.2010 21:05

Кажется, сейчас пойдут просьбы о помощи кодом. Проще, наверно, сразу написать пример:
Код AS3:

// где-то там в при клике или еще где
oldY = stage.mouseY;
oldX = stage.mouseX;
 
private function onMouseMove(event:MouseEvent):void {
var deltaY:int = stage.mouseY - oldY; // вот и узнали, насколько изменилась координата по У
var deltaX:int = stage.mouseX - oldX;
oldY = stage.mouseY;
oldX = stage.mouseX;
if (deltaX > -20 && deltaX < 20) //чего-то делаем
}

deltaY = [-20, 20] нужно для того, чтобы определить, что юзверь потянул мышку по вертикали, а не наискосок. Опционально, но как пример, показано.

i.o. 27.11.2010 21:18

ну кстати, как вариант, можно приводить смещение мыши к единичному вектору и смотреть dotProduct с вектором [0, 1]. А там и решать уже, в каких пределах считать, что мышь движется "вертикально".

КорДум 27.11.2010 21:26

Цитата:

Сообщение от i.o. (Сообщение 952986)
ну кстати, как вариант, можно приводить смещение мыши к единичному вектору и смотреть dotProduct с вектором [0, 1]. А там и решать уже, в каких пределах считать, что мышь движется "вертикально".

Вай, а хто ето?

i.o. 27.11.2010 21:27

ну по-русски — скалярное произведение векторов ))


Часовой пояс GMT +4, время: 17:20.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.