Форум 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=111457)

flash33 26.04.2008 23:33

Нахождение координат мыши
 
Задача не тривиальная. Мне необходимо найти координаты мыши при её движении. Можно сделать это по событию MOUSE_MOVE, можно по таймеру (задав достаточно малый delay). Но все это натыкается на ту проблему, что плеер отслеживает перемещение курсора достаточно "грубо" при его быстром передвижении ( к примеру, соседние значения координат точек могут быть такими: x0=100, y0=100; x1=110, y1=105) , то есть расстояние между замеренными точками может быть несколько десятков пикселей. Уменьшить дискретность не возможно ни увеличением FPS клипа, ни уменьшением delay - то есть проблема лежит в самом плеере. Насколько я понимаю, единственный способ найти промежуточные значения между контрольными точками - аппроксимация. Самый простой случай - линейная аппроксимация, но при таком подходе соединение всех точек отрезками даст достаточно "ломанную" траекторию, правдоподобным будет применение нелинейной аппрокимации, соединение даст вполне гладкую кривую. Применять для этого кривые Безье? Я не уверен , что это даст правдоподобный результат. Если кто знает, подскажите математический инструмент нахождения промежуточных точек движения курсора. Если конечно он существует :)

2morrowMan 26.04.2008 23:52

Такое движение миши это проблема не плеера, а Windows! И, вообще то, это не проблема!
Найдите пару рисовалок на флеше и посмотрите как это там реализовано...

flash33 27.04.2008 00:00

Каких рисовалок? Где по EnterFrame или по MouseMove идет вызов graphics.lineTo(mouseX, mouseY)? Там эти ломанные видны во всей красе. Или у Вас есть на примете какая то рисовалка с более точной реализацией прорисовки? Поделитесь

Alex Lexcuk 27.04.2008 00:06

Корел дро.

Mr. Fixit 27.04.2008 00:50

Код:

someObj.addListener(MouseEvent.MOUSE_MOVE, mouseMoveListener);

private function mouseMoveListener(event : MouseEvent) : void {
    ...
    event.updateAfterEvent();
}


derhab 27.04.2008 01:02

Цитата:

Сообщение от Mr. Fixit (Сообщение 735789)
Код:

someObj.addListener(MouseEvent.MOUSE_MOVE, mouseMoveListener);

private function mouseMoveListener(event : MouseEvent) : void {
    ...
    event.updateAfterEvent();
}


Mr. Fixit, а что за addListener? Ну это опечатка, понятно..
а вообще интересно, вы читаете предыдущие посты?:)

BlooDHounD 27.04.2008 01:37

меняйте дрова у мышки. если у вас пс/2 то можно выставить 200 герц, и обновление мышки на экране будет гораздо чаще. а что качается резких рывков, то система работает с вашей мышкой, на сколько я помню, по умолчанию 100 герц. тоесть замеры движения то дискретные. и иначе быть не может.

что касается аппроксимации, то возьмите учебник по алгоритмизации за 2 семестр, любого вуза.

flash33 27.04.2008 13:10

BlooDHounD, Вы наиболее правильно поняли мою проблему, спасибо. Я конечно могу менять драйвер, но не могу заставить других. Поэтому вычисление промежуточных значений самый подходящий мне вариант. Но, к сожалению, учебника по алгоритмизации у меня нет, и даже если найду, хотелось бы знать куда копать. Опять же гугл мне бы помог, если б я смог правильно сформулировать свой вопрос.. (хотя бы на языке Шекспира)

BlooDHounD 27.04.2008 13:35

http://www.google.ru/search?q=аппроксимация

ALiEN_ 27.04.2008 14:59

все просто, надо использовать curveTo... между двумя соседними точками. могу выложить готовую рисовалку.


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

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