Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Как узнать скорость курсора? (http://www.flasher.ru/forum/showthread.php?t=134580)

mr_pol 05.01.2010 12:58

Как узнать скорость курсора?
 
Как узнать скорость курсора? Я думаю, отслеживать его координаты, например, раз в секунду с помощью setInterval и сравнивать с реальным положением курсора

Может есть какой-нибудь другой способ) буду рад, если кто-нибудь поделится хорошей идеей или готовым решением :rolleyes:

Zik. 05.01.2010 13:01

а в чем должна измерятся скорость? в пикселей/секундах?

mr_pol 05.01.2010 13:11

да! ...можно и километры в час

но думаю, не важно. мне бы сам способ измерения

Добавлено через 3 часа 1 минуту
нашел кое-что в гугле и сделал так:

Код AS1/AS2:

onEnterFrame = function () {
        sx = Math.abs(_root._xmouse-this.oldx);
        sy = Math.abs(_root._ymouse-this.oldy);
        speed = Math.round(Math.sqrt(Math.pow(sx, 2)+Math.pow(sy, 2), 2));
        this.oldx = _root._xmouse;
        this.oldy = _root._ymouse;
};

speed - типа скорость. но это не скорость курсора, а расстояние от начальной точки курсора до конечной на onEnterFrame. Как измерить скорость максимально точно?

etc 05.01.2010 20:05

Цитата:

Сообщение от mr_pol (Сообщение 876878)
speed - типа скорость. но это не скорость курсора

Вполне себе скорость. Просто единица времени равна частоте изменения кадров.

mr_pol 05.01.2010 20:43

В этом случае если двигать курсор медленно, то скорость эта зачастую равна 0.

Но я пока остановился на таком варианте:
Код AS1/AS2:

onEnterFrame = function () {
        sx = Math.abs(_root._xmouse-this.oldx);
        sy = Math.abs(_root._ymouse-this.oldy);
        speed = Math.floor(Math.sqrt(Math.pow(sx, 2)+Math.pow(sy, 2), 2));
        mc._x += (_xmouse-mc._x)/6;
        mc._y += (_ymouse-mc._y)/6;
        this.oldx = mc._x;
        this.oldy = mc._y;
};

где mc - мувик, таскающийся за курсором. У кого-нибудь есть другие варианты решения этой задачи?

etc 05.01.2010 21:00

Скорость нулевая, потому что округляется floor-ом и round-ом до целого.

mr_pol 05.01.2010 21:38

Да, округляется. Но даже и без них при fps = 30 скорость частенько равна 0. а второй вариант работает лучше

Hauts 06.01.2010 00:46

Если второй вариант работает лучше, то чего вам еще надо?
Понятно, что при onEnterFrame скорость зачастую будет равна нулю, вы поставьте onMouseMove, и тогда не будет.

aksios 06.01.2010 01:09

mr_pol, а зачем Вам это надо?

mr_pol 06.01.2010 01:16

Hauts, эффект один и тот же что при onEnterFrame, что и при onMouseMove. Только onMouseMove почему-то не 0 дает, а 1. я понятия не имею почему)

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

Добавлено через 2 минуты
aksios, если это ваш ответ, то он меня не устраивает)


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

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