2016-12-04 3 views
0

Я делаю эту игру во Flash, в которой я хочу, чтобы пользователь рисовал прямые линии (чтобы создать незакрытую фигуру), и я хочу прекратить рисовать линии двойным щелчком.Остановка рисования пользователя двойным щелчком? As3

My чертежная доска - это клип (а не сцена).

Я положил прослушиватель событий двойного щелчка на доске, а также добавил doubleClickEnabled = true к плате.

Однако, независимо от того, что я делаю, плата не узнает мой двойной щелчок.

ответ

0

Событие click Событие запускается, когда на месте события есть какое-то кликабельное сущность. Другими словами, например, «двойным щелчком» по «прозрачному» региону в «чертежной доске» «» связанный обработчик событий не будет вызываться.

В качестве решения проблемы, однако, вы можете использовать объект stage, поскольку он занимает всю область отображения; таким образом, получает события мыши. Идея заключается в том, чтобы Обработчик события stage «s сообщить коллеге чертежной доски о наступлении события:

board.doubleClickEnabled = true; 
board.addEventListener(MouseEvent.DOUBLE_CLICK, onBoardDBLClick); 

stage.doubleClickEnabled = true; 
stage.addEventListener(MouseEvent.DOUBLE_CLICK, onStageDBLClick); 

function onStageDBLClick(e:MouseEvent):void { 
    trace("STAGE double clicked."); 

    // if the location is inside the "board", then inform the "board" about the event! 
    if (board.getBounds(stage).contains(e.stageX, e.stageY)) { 
     onBoardDBLClick(e); 
    } 
} 

function onBoardDBLClick(e:MouseEvent):void { 
    trace("The Double-click logic of the board."); 
    e.stopPropagation(); 
} 
+0

Я попробовал это, он не работает. Я добавил слушателя с двойным щелчком на сцену, и он работает, когда я дважды нажимаю сцену вне доски, но не тогда, когда я дважды нажимаю на панель. – Mich

+0

@Mich Я думал, что вы заинтересованы только в том, чтобы дважды щелкнуть прозрачные области на «доске», чтобы завершить «рисование!», Но так как вы объявили об этом иначе, это просто вопрос переосмысления! Проверьте внесенные изменения в сообщение :) – someOne

+0

Я предлагаю простой обработчик кликов с глобальной переменной ** deltaTime ** для определения того, какие клики двойные. из-за объявления пользовательской максимальной задержки для двух последовательных кликов (для окон его 500 мс). также это может быть сделано с событиями mouseDown и mouseUp для уменьшения прослушивателей событий и просто с использованием существующих слушателей (существует для задания рисования). –

Смежные вопросы