проблемы с кнопками в as3 - PullRequest
       24

проблемы с кнопками в as3

1 голос
/ 25 октября 2011

У меня есть две кнопки, каждая на половину ширины экрана и обе на всю высоту сцены. Таким образом, одна кнопка будет слева от экрана, а другая - справа. У меня есть списки событий, когда кнопки нажимаются и отпускаются.
Моя проблема заключается в том, что если я нажму одну кнопку и перетащу на другую сторону, событие получит, что мышь не отпущена.
Например, правая кнопка должна заставить моего персонажа летать, поэтому, когда я нажимаю на него, он летит, и если я перетаскиваю свою мышь на левую кнопку и отпускаю, мой персонаж продолжает летать. Я полагаю, что это связано с тем, что правая кнопка не может обнаружить мышь, когда она не в форме кнопки. Есть ли способ обойти это?

Ответы [ 2 ]

0 голосов
/ 25 октября 2011

Рассмотрим также

MouseEvent.MOUSE_OUT.

Когда вы начинаете перетаскивание (MOUSE_DOWN), установите логическое значение isCurrentlyDragging в true (определено вне функции обработчика событий, конечно).На MOUSE_OUT, если он в данный момент перетаскивает, решите, обрабатывать ли его как MOUSE_UP.

На MOUSE_UP и на MOUSE_OUT установлено isCurrentlyDragging = false;

0 голосов
/ 25 октября 2011

Это можно было легко обнаружить в AS2, но они удалили его (по некоторым причинам) в AS3.

Чтобы обойти это, я добавляю глобальный слушатель mouseUp;

stage.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
function mouseUpHandler(e:Event) {
  if( _clickedObject ) _clickedObject.dispatchEvent(new Event("releasedOutsideEvent"));
}

А потом в моих обработчиках MOUSE_DOWN я добавляю

_clickedObject = e.target;

и в обработчике MOUSE_UP

_clickeObject = null;

Или что-то в этом роде. Там может быть одна или две ошибки, но это должно сработать.

...