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

CyberDude 12.07.2012 20:35

Почему бы не подписать сцену на событие MouseDown а затем, по сему событию сохранять координаты точки, и относительно этой точки считать угол?

vizgl 13.07.2012 00:31

Цитата:

Сообщение от CyberDude (Сообщение 1088454)
Почему бы не подписать сцену на событие MouseDown а затем, по сему событию сохранять координаты точки, и относительно этой точки считать угол?

у меня, чтобы крутить обьект, по нему нужно сначала кликнуть и потом делать вращательные движения мышкой в любом месте

expl 13.07.2012 00:33

Цитата:

у меня, чтобы крутить обьект, по нему нужно сначала кликнуть и потом делать вращательные движения мышкой в любом месте
А в чём удобство то такого подхода? Всмысле чтобы перестать крутить надо еще раз кликнуть чтоли? Дык ведь придется аккуратно назад подводить, чтобы не повернуть еще раз. Цель вызвать раздражение у юзера?

Krusty 13.07.2012 00:47

Думаю, что бы перестать крутить надо просто кликнуть, в любом месте экрана , и текущий выбор запомнится, вращение остановится.

Wolsh 13.07.2012 00:47

По поводу масс эффекта думаю надо создавать виртуальный центр, вокруг которого считать поворот.
Играл давно и не помню, как там активизируется слежение за мышью — сразу при появлении меню, или надо нажать мышь и вращать, а потом отпустить когда подсветится на нужном пункте... Не важно, есть момент когда начинается слежение за движением мыши. В этот момент на круговом меню какой-то пункт "выбран", то есть "курсор меню" находится на каком-то секторе окружности. Создаем виртуальное представление окружности для мышки, то есть определяем центр окружности так, чтобы положение мыши "сейчас" было в том же секторе этой виртуальной окружности, что и "курсор меню" в реальной окружности. И далее вычисляем угол при движении мыши относительно этого виртуального центра.
Ну а плавность я думаю твинами можно обеспечить.

vizgl 13.07.2012 03:37

Да, как вариант строить окружность по 3 последним точкам и проверять относительно её центра, в какую сторону пользователь вращает курсор. Попробую и отпишусь о результатах.

Добавлено через 9 часов 48 минут
Сделал так:
Есть массив(очередь) из 3 точек(координаты курсора), через определенное время(например 100 мс), выбрасываем первую точку и добавляем последнюю(текущие координаты курсора). Еще храним предыдущую позицию курсора, записывается на каждом шаге.
Теперь рассчитываем центр окружности по таким точкам: 1) точка с индексом 0 в массиве координат, 2) предыдущая позиция курсора, 3) текущая позиция.
Находим угол поворота между предыдущей позицией курсора и текущей относительно центра окружности. Этот угол и будет коэффициентом поворота. Можно попробовать рассчитывать этот коэффициент как расстояние между пред. и текущей координатами курсора.

Можно еще попробовать строить окружность по другим точкам, покрутить время удаления/добавления точек и т.д.


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

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