Drag - drop part1

Серія статей на тему Drag # 038; Drop.
  1. Drag # 038; Drop Part1. перетягування об'єктів
  2. Drag # 038; Drop Part2. Створюємо ігровий магазин з функцією перетягування куплених предметів (скоро)
  3. Drag # 038; Drop Part3. Ефект гуми при Тасканії (скоро)
  4. Drag # 038; Drop Part4. Бібліотека FPDragManager (скоро)

Drag # 038; Drop - це механізм який буквально означає Потягнув-і-Кинув. Дуже часто такий механізм використовується в іграх, наприклад коли вам необхідно реалізувати перетягування предметів з магазина в рюкзак. Звичайно можна зробити кнопку перенести, але тягання як то приємніше чи :) Створюється відчуття безпосередньої участі у цих заходах, а це дорогого коштує, особливо в іграх. Досить мріяти, давайте приступимо до справи.

У цьому уроці ми розберемо загальні принципи механізму Drag # 038; Drop, а в наступній частині створимо умовний ігровий магазин з функцією тягання предметів з магазина в рюкзак. Написати код реалізовувати механізм Drag-and-Drop можна за допомогою стандартних методів startDrag / stopDrag, а так само за допомогою своєї власної реалізацією використовуючи подія MouseEvent.MOUSE_MOVE. У цій статті ми поговоримо про методи startDrag / stopDrag, а в наступних розберемо як можна створити ефект "гуми" при перетягуванні.

Якщо в кратце, то механізм тягання можна визначити в три етапи:

  • натискання мишкою
  • тягання
  • відпускання миші

Факт натискання мишкою визначаємо за допомогою події MouseEvent.MOUSE_DOWN. Майте на увазі що слухати треба саме подія MouseEvent.MOUSE_DOWN а не MouseEvent.CLICK. Тому що CLICK спрацьовує коли ви натискаєте і відпускаєте кнопку миші. А нам потрібно зловити момент натискання без відпускання. Після настання події MouseEvent.MOUSE_DOWN викликаємо метод startDrag. і слухаємо подія MouseEvent.MOUSE_MOVE для того що б визначати в кожен момент часу де знаходиться об'єкт який ми тягаємо. Для вилову момент відпускання миші слухаємо подія MouseEvent.MOUSE_UP. і в обробнику цієї події викликаємо метод stopDrag: