- Drag # 038; Drop Part1. перетягування об'єктів
- Drag # 038; Drop Part2. Створюємо ігровий магазин з функцією перетягування куплених предметів (скоро)
- Drag # 038; Drop Part3. Ефект гуми при Тасканії (скоро)
- 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: