Модераторы: SoWa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Движение мыши за рабочей областью 
:(
    Опции темы
jorka
Дата 8.3.2010, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 104
Регистрация: 25.10.2008

Репутация: нет
Всего: нет



При движении мыши по полотну срабатывает событие MOUSE_MOVE, но когда мышь выходит за полотно событие не срабатывает(
Как "поймать" движение и координаты мыши за рабочей областью?
PM MAIL   Вверх
bars80080
Дата 8.3.2010, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: нет
Всего: 315



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

второй вариант - просто слушать каждый кадр мышь, брать её координаты и вычислять за счёт параметров объекта, находится ли она в его пределах
PM MAIL WWW   Вверх
jorka
Дата 8.3.2010, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 104
Регистрация: 25.10.2008

Репутация: нет
Всего: нет



Цитата(bars80080 @ 8.3.2010,  19:34)
второй вариант - просто слушать каждый кадр мышь, брать её координаты и вычислять за счёт параметров объекта, находится ли она в его пределах

Я про это и говорю, где взять координаты мыши если она за рабочей областью(за окном флэш приложения)?
PM MAIL   Вверх
SoWa
Дата 8.3.2010, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 1
Всего: 74



Никак. Флеш не умеет работать с тем, что не он(кроме камеры и микрофона)


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
bars80080
Дата 9.3.2010, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: нет
Всего: 315



а, за пределами окна....

помнится был такой способ: область окна представляла две зона: собственно окно, и внутренняя область почти такой же площади, но пикселов на 10 от края отступающая. получается рамка.  когда мышь над внутренней областью - работают обработчики по наведению, как только она попадает на внешнюю рамку, запускаются обработчики отбоя. конечно, чем рамка больше - тем лучше, более быстрое движение мыши можно поймать. но всё равно не 100%
PM MAIL WWW   Вверх
jorka
Дата 9.3.2010, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 104
Регистрация: 25.10.2008

Репутация: нет
Всего: нет



Цитата(bars80080 @ 9.3.2010,  00:04)
помнится был такой способ: область окна представляла две зона: собственно окно, и внутренняя область почти такой же площади, но пикселов на 10 от края отступающая. получается рамка.  когда мышь над внутренней областью - работают обработчики по наведению, как только она попадает на внешнюю рамку, запускаются обработчики отбоя. конечно, чем рамка больше - тем лучше, более быстрое движение мыши можно поймать. но всё равно не 100%

Поподробнее можно? Про область Я понял, но как она поможет узнать про мышь за пределами окна?



Кстати, а можно каким-то образом задать координаты для мыши? Например что б всегда по центру была?

Это сообщение отредактировал(а) jorka - 9.3.2010, 00:31
PM MAIL   Вверх
bars80080
Дата 9.3.2010, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: нет
Всего: 315



Цитата(jorka @  8.3.2010,  23:26 Найти цитируемый пост)
Поподробнее можно? Про область Я понял, но как она поможет узнать про мышь за пределами окна?

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


Цитата(jorka @  8.3.2010,  23:26 Найти цитируемый пост)
Кстати, а можно каким-то образом задать координаты для мыши? Например что б всегда по центру была?

да вроде, этот девайс из флэша неуправляем. можно только считать положение мыши в пределах окна и всё
PM MAIL WWW   Вверх
SoWa
Дата 9.3.2010, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 1
Всего: 74



Цитата(jorka @  9.3.2010,  00:26 Найти цитируемый пост)
Кстати, а можно каким-то образом задать координаты для мыши? Например что б всегда по центру была?

Может тебе хочется что-то типа прицела в КС, чтоб всегда по центру экрана был?
Тогда где тебе надо рисуй крестик, курсор прячь, а всю нужную физику считай отдельно, исходя из разницы координат курсора и прицела. Как-то так.


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
jorka
Дата 9.3.2010, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 104
Регистрация: 25.10.2008

Репутация: нет
Всего: нет



Цитата(SoWa @ 9.3.2010,  14:06)
Может тебе хочется что-то типа прицела в КС, чтоб всегда по центру экрана был?
Тогда где тебе надо рисуй крестик, курсор прячь, а всю нужную физику считай отдельно, исходя из разницы координат курсора и прицела. Как-то так.

Да, именно прицел. Но проблема остается, в КС можно двигая мышь в лево/право повернуть камеру на 360(и больше) градусов.
Во флэше происходит следующее:
1) В полноэкранном режиме мышь упирается в край и отследить движение нельзя
2) В обычном режиме мышь уходит за рабочую область и опять же нельзя зафиксировать движение и координаты.
И получается такая нехорошая вещь что от изначального угла поворота можно отклониться только на заданный угол( 

Это сообщение отредактировал(а) jorka - 9.3.2010, 14:20
PM MAIL   Вверх
bars80080
Дата 9.3.2010, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: нет
Всего: 315



Цитата(jorka @  9.3.2010,  13:18 Найти цитируемый пост)
В полноэкранном режиме мышь упирается в край и отследить движение нельзя

именно про это я и говорил. мы указываем зоны активности по сторонам. как только мышь подходит к краю, то она попадает на небольшую полоску у края, на которую навешан вызов функции, отвечающий за смену обзора
PM MAIL WWW   Вверх
jorka
Дата 9.3.2010, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 104
Регистрация: 25.10.2008

Репутация: нет
Всего: нет



Цитата(bars80080 @ 9.3.2010,  15:17)
именно про это я и говорил. мы указываем зоны активности по сторонам. как только мышь подходит к краю, то она попадает на небольшую полоску у края, на которую навешан вызов функции, отвечающий за смену обзора

Это будет неудобно и неестественно, получится что когда мышь будет(допустим ширина экрана 800px) с координатами от 50 до 750, то прицелом можно будет управлять свободно, а когда вне этого диапазона, то прицел будет двигаться небольшими одинаковыми шагами.

PM MAIL   Вверх
bars80080
Дата 9.3.2010, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: нет
Всего: 315



у меня большие сомнения, что в играх используется другой механизм. скорее всего они также перехватывают положение на полосе у края, оставляют нарисованный прицел на краю и начинают двигать экран, до тех пор, пока настоящий курсор не вернётся в рабочую область
PM MAIL WWW   Вверх
SoWa
Дата 9.3.2010, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 1
Всего: 74



Мм, нее.
Тут другая шляпа.
КС и прочие шутеры курсор "залепляют" по центру экрана. Бывает это видно, когда из игрушки в диспетчер задач выйдешь. Ну или я давно в игры не играл )
А во флеше будет плохо потому, что мышь, уперевшись в край рабочей области никуда обратно не отскочит.
Но флеш однозначно не умеет поставить курсор в нужные координаты- иначе бы порнобаннеры бы мышь не выпускали  smile 

Цитата(jorka @  9.3.2010,  15:49 Найти цитируемый пост)
то прицел будет двигаться небольшими одинаковыми шагами.

Да не факт, там как уж физику пропишешь.

Я думаю, bars80080 предложил дельное решение smile Но если найдется что поинтереснее или возникнут мысли- обязательно делись ^_^


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
jorka
Дата 9.3.2010, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 104
Регистрация: 25.10.2008

Репутация: нет
Всего: нет



bars80080, можешь в виде алгоритма написать что и как должно быть?
Для того что б тебе было проще я коечто навалял, а ты подправь где не так.

На центральном блоке я поставил:
1)слушатель MOUSE_MOVE и туда запихнул
2)deltaX = curX-prevX;  //смещение
   UnitAngleY -= deltaX*0.075*4; //угол поворота камеры по Y 

В левый блок(примерно тоже самое и в правом):
1)слушатель MOUSE_MOVE и туда запихнул
2)deltaX = curX-prevX;  //смещение
   UnitAngleY -= deltaX*0.075*4-3; //угол поворота камеры по Y 


Ориентировка идет на оконный режим


Это сообщение отредактировал(а) jorka - 9.3.2010, 17:47

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  Game.rar 5,95 Kb
PM MAIL   Вверх
nns2009
Дата 14.3.2010, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 1.2.2009

Репутация: нет
Всего: 1



Цитата(jorka @  8.3.2010,  16:59 Найти цитируемый пост)
Как "поймать" движение и координаты мыши за рабочей областью? 

Во Flash Player(то что работает на интернет страницах) никак: только в Adobe AIR.

Цитата(bars80080 @  9.3.2010,  15:56 Найти цитируемый пост)
у меня большие сомнения, что в играх используется другой механизм. скорее всего они также перехватывают положение на полосе у края, оставляют нарисованный прицел на краю и начинают двигать экран, до тех пор, пока настоящий курсор не вернётся в рабочую область 

Я немного работал с DirectInput и C++, там не идёт привязка к экрану и его размерам и соответственно, всё проще:
при каждом обновлении мы:
1) Читаем с устройства "мышь" смещение относительно предыдущего раза.
2) Обнуляем смещение

Таким образом при движении мыши вправо, смещение_по_x > 0,
а при движении влево - меньше 0.

А что делать во Flash? - это проблема.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | ActionScript 3 | Следующая тема »


 




[ Время генерации скрипта: 0.0584 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.