Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Flash и тач-скрин. (http://www.flasher.ru/forum/showthread.php?t=182177)

OwnerOfSuccuby 14.07.2012 19:18

Flash и тач-скрин.
 
Здравствуйте. Возникла проблема - хотел спросить совета у более опытных Флешеров =)

Переделываю 1 игрушку с АС2 на АС3 - и попросили добавить кнопки, чтобы её можно было гонять и на точ скрине.

На обычом компе движение вперед назад осуществляется кнопками. Здесь надо добавить кнопки как для нажатия мыши - причем надо очень точно их обработать, чтобы всё работало четко.

Вот примерно так обрабатываю:

fRMD- оброботчик выполняющийся если кнопка нажата.
fRMU - если не нажата - отключает движение.

Код AS3:

this.addEventListener(MouseEvent.MOUSE_DOWN,fRMD);
this.addEventListener(MouseEvent.MOUSE_UP,fRMU);
this.addEventListener(MouseEvent.CLICK,fRMU);
//this.addEventListener(Event.DEACTIVATE, fDEzRight);
this.addEventListener(MouseEvent.ROLL_OUT, fRMU);
this.addEventListener(MouseEvent.MOUSE_OUT, fRMU);

Но порою бывает так, что девайс не понимает что кнопка отжата и продолжает движение.

Есть ли возможность обработать как то подругому - к примеру по таймеру ? Или может есть какой то листенер для точ скринов ? Есть ли какое нить свойство которое можно проверять по таймеру отвечающее нажата ли мышка - как к примеру в АС 2 if mouse down ?

Как проверить с 100% вероятностью на точ скрине что кнопка была отжата ?

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

Всем заранее спс =)

illuzor 14.07.2012 19:36

События MOUSE_OVER, MOUSE_OUT для тач интерфейсов вообще не нужны, потому что их в этом случае быть не может.

MOUSE_UP нужно вешать не на кнопку, а на stage.

ashIndie 14.07.2012 19:41

Зачем тебе обрабатывать еще и клик?
Клик это MOUSE_DOWN+MOUSE_UP
Эти слушатели вешай на stage, как сказал illuzor. И проверяй какая под курсором кнопка при нажатии.

OwnerOfSuccuby 14.07.2012 22:32

События у меня не отключалось ))) Вот и добавил все возможные листенеры =) Не помогло =))) Помогло зато когда стал проверять на координаты по х мыши =))) Хоть на точ скрине и нет её (мыши).
Выход значения маусХ при отпускании на то более ли оно 5000 - оно там при отпускание оказалось что иногда устанавливается в 100к+ =) Как говорится мы не ищем простых путей =))) Поэтому идем кривыми и длинными =)))

Огромное спасибо - да действительно на stage помогло. Что то меня переклинило =)))

ChuwY 15.07.2012 06:12

Все несколько красивее можно сделать.
Используйте не MouseEvent, а TouchEvent. У него есть поле touchPointID (или что-то вроде того).
Заводим таблицу. При эвентах, говорящих о присутствии точки касания, записываем ид в таблицу.
При обратных действиях -- удаляем свойство с ID из таблицы.
Количесто элементов таблицы -- количество точек касания.

OwnerOfSuccuby 16.07.2012 20:10

Огромное всем спасибо за ответы =)

mooncar 16.07.2012 20:24

OwnerOfSuccuby, код необходимо оформлять тегами.


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

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