![]() |
|
Модераторы: SoWa |
![]()
|
|
| jorka |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 104 Регистрация: 25.10.2008 Репутация: нет Всего: нет |
При движении мыши по полотну срабатывает событие MOUSE_MOVE, но когда мышь выходит за полотно событие не срабатывает(
Как "поймать" движение и координаты мыши за рабочей областью? |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: нет Всего: 315 |
есть метод, что-то вроде hint. оно срабатывает, если мышь находится в пределах области клипа
второй вариант - просто слушать каждый кадр мышь, брать её координаты и вычислять за счёт параметров объекта, находится ли она в его пределах |
|||
|
||||
| jorka |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 104 Регистрация: 25.10.2008 Репутация: нет Всего: нет |
Я про это и говорю, где взять координаты мыши если она за рабочей областью(за окном флэш приложения)? |
|||
|
||||
| SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 1 Всего: 74 |
Никак. Флеш не умеет работать с тем, что не он(кроме камеры и микрофона)
-------------------- Всем добра |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: нет Всего: 315 |
а, за пределами окна....
помнится был такой способ: область окна представляла две зона: собственно окно, и внутренняя область почти такой же площади, но пикселов на 10 от края отступающая. получается рамка. когда мышь над внутренней областью - работают обработчики по наведению, как только она попадает на внешнюю рамку, запускаются обработчики отбоя. конечно, чем рамка больше - тем лучше, более быстрое движение мыши можно поймать. но всё равно не 100% |
|||
|
||||
| jorka |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 104 Регистрация: 25.10.2008 Репутация: нет Всего: нет |
Поподробнее можно? Про область Я понял, но как она поможет узнать про мышь за пределами окна? Кстати, а можно каким-то образом задать координаты для мыши? Например что б всегда по центру была? Это сообщение отредактировал(а) jorka - 9.3.2010, 00:31 |
|||
|
||||
| bars80080 |
|
||||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: нет Всего: 315 |
нет, движение за пределами так и останется неизвестным. а вот зарегестрировать момент выхода из окна можно.
да вроде, этот девайс из флэша неуправляем. можно только считать положение мыши в пределах окна и всё |
||||
|
|||||
| SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 1 Всего: 74 |
Может тебе хочется что-то типа прицела в КС, чтоб всегда по центру экрана был? Тогда где тебе надо рисуй крестик, курсор прячь, а всю нужную физику считай отдельно, исходя из разницы координат курсора и прицела. Как-то так. -------------------- Всем добра |
|||
|
||||
| jorka |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 104 Регистрация: 25.10.2008 Репутация: нет Всего: нет |
Да, именно прицел. Но проблема остается, в КС можно двигая мышь в лево/право повернуть камеру на 360(и больше) градусов. Во флэше происходит следующее: 1) В полноэкранном режиме мышь упирается в край и отследить движение нельзя 2) В обычном режиме мышь уходит за рабочую область и опять же нельзя зафиксировать движение и координаты. И получается такая нехорошая вещь что от изначального угла поворота можно отклониться только на заданный угол( Это сообщение отредактировал(а) jorka - 9.3.2010, 14:20 |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: нет Всего: 315 |
именно про это я и говорил. мы указываем зоны активности по сторонам. как только мышь подходит к краю, то она попадает на небольшую полоску у края, на которую навешан вызов функции, отвечающий за смену обзора |
|||
|
||||
| jorka |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 104 Регистрация: 25.10.2008 Репутация: нет Всего: нет |
Это будет неудобно и неестественно, получится что когда мышь будет(допустим ширина экрана 800px) с координатами от 50 до 750, то прицелом можно будет управлять свободно, а когда вне этого диапазона, то прицел будет двигаться небольшими одинаковыми шагами. |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: нет Всего: 315 |
у меня большие сомнения, что в играх используется другой механизм. скорее всего они также перехватывают положение на полосе у края, оставляют нарисованный прицел на краю и начинают двигать экран, до тех пор, пока настоящий курсор не вернётся в рабочую область
|
|||
|
||||
| SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 1 Всего: 74 |
Мм, нее.
Тут другая шляпа. КС и прочие шутеры курсор "залепляют" по центру экрана. Бывает это видно, когда из игрушки в диспетчер задач выйдешь. Ну или я давно в игры не играл ) А во флеше будет плохо потому, что мышь, уперевшись в край рабочей области никуда обратно не отскочит. Но флеш однозначно не умеет поставить курсор в нужные координаты- иначе бы порнобаннеры бы мышь не выпускали Да не факт, там как уж физику пропишешь. Я думаю, bars80080 предложил дельное решение -------------------- Всем добра |
|||
|
||||
| jorka |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 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 |
|||
|
||||
| nns2009 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 174 Регистрация: 1.2.2009 Репутация: нет Всего: 1 |
Во Flash Player(то что работает на интернет страницах) никак: только в Adobe AIR. Я немного работал с DirectInput и C++, там не идёт привязка к экрану и его размерам и соответственно, всё проще: при каждом обновлении мы: 1) Читаем с устройства "мышь" смещение относительно предыдущего раза. 2) Обнуляем смещение Таким образом при движении мыши вправо, смещение_по_x > 0, а при движении влево - меньше 0. А что делать во Flash? - это проблема. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | ActionScript 3 | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |