2012-06-02 2 views
0

мне нужно найти способ отключить перетаскивание формы в KineticJSKineticJS: Отключить перетаскивание

К примеру, у меня есть круг с опцией draggable включен.

Я хочу отключить перетаскивание этого круга, если shiftKey нажата, и я хотел бы обрабатывать этот случай по-другому.

Вот пример того, что я хотел бы сделать: http://jsfiddle.net/nL3kb/

Можно ли каким-то образом?

ответ

3

У вас есть несколько вариантов. Одна вещь, которую вы можете сделать, это сделать группу перетаскиваемой и добавить круг в группу. В мульдауне, если был нажат сдвиг, вы можете отменить распространение события, чтобы функция перетаскивания группы была отменена.

http://jsfiddle.net/SyMRJ/

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

Ура!

+0

Спасибо! Я не очень доволен решением Grouping, но, похоже, для меня это работает – yko

+5

UPDATE - теперь вы можете отменить текущие операции перетаскивания KineticJS в любое время с использованием .setDraggable (false) –

+0

Я только что экспериментировал с этим в Kinetic.js 5.1.0. Похоже, что setDraggable (true/false) в обработчике событий mousedown (в зависимости от ключа вниз) является единственным _ надежным способом предотвращения перетаскивания. dragstart/dragmove слишком поздно (перетаскивание уже происходит), а cancelBubble/stopPropagation() в mousedown не работают. –

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