Інтерфейс Touch Handler – РОЗРОБКА ІГОР ДЛЯ ОС ANDROID

Щоб ми могли використовувати два класи обробників, замінюючи один іншим, нам необхідно визначити загальний інтерфейс У лістингу 58 показаний даний інтерфейс, який називається TouchHandler 7

Лістинг 58 PeaлізaціяTouchHandlerjava для Android 15 і 16 package corn, badl ogi с androi dgames framework imp;

Bee TouchHandler повинні реалізувати інтерфейс OnTouchl istener, який використовується для того, щоб зареєструвати обробник під View Методи інтерфейсу відповідають методам інтерфейсу Input Перші три методи застосовуються для одержання стану певного покажчика, а четвертий необхідний для отримання TouchEvent, щоб ми змогли обробити події вводу Зверніть увагу, що даний метод для опитування приймає ID покажчика

Клас SingleTouchHandler

У випадку з обробником одиночних торкань ми беремо до уваги тільки нульовий ID Давайте згадаємо, як працює клас TouchEvent, коли говорили про інтерфейс Input:

Як і в класі KeyEvent, тут визначається пара констант, а також зберігається тип події торкання, х-і у-координати в координатної системі виду View і ID покажчика

Лістинг 59 показує реалізацію інтерфейсу TouchHandlег для Android версій 15 і 16

Лістинг 59 SingleTouchHandlerJava підходить тільки для обробки одиночних торкань

Ми починаємо з того, що реалізуємо інтерфейс TouchHandler А це також передбачає, що нам доведеться реалізувати інтерфейс OnTouchLi stener Далі йдуть кілька членів, які вам вже знайомі На даний момент у нас є три члени, які зберігають поточний стан сенсорного екрану для одного пальця, за ними слід Pool і два списки TouchEvent Те ж саме відбувалося в KeyboardHandlег У нас також є два члени: scaleX і scaleY До них ми повернемося трохи пізніше Вони необхідні для того, щоб впоратися з різними дозволами екрану

ПРИМІТКА

Звичайно, ми могли б зробити більш струнку систему, дозволивши KeyboardHandler і ingleTouchHandler успадковувати від основного класу, який відповідає за збір інформації та синхронізацію Проте пояснення стало б ще більш складним, так що ми просто напишемо ще кілька рядків коду

У конструкторі реєструємо оброблювач як OnTouchLi stener і инициализируем Pool, який використовуємо для переробки TouchEvent Ми також зберігаємо параметри sealеХ і scaleY, які передаються конструктору (Проте поки не зосереджуємося на них)

Метод onTouchC виконує ті ж функції, що й метод опКеу для KeyboardHandl ег Єдина різниця полягає в тому, що тепер ми обробляємо TouchEvent, а не KeyEvent Ви вже знайомі з особливостями синхронізації, збору даних та обробкою MotionEvent Єдина річ, яка заслуговує окремої уваги, це те, що ми фактично множимо отримані х-і у-координати на sea1еХ і sealeY відповідно Запамятайте цей момент, ми повернемося до нього трохи пізніше

Методи sTouchDown, getTouchXC і getTouchYC дозволяють отримати інформацію про стан сенсорного екрану, грунтуючись на значеннях, які були задані в методі onTouch Єдиний примітний момент, повязаний з ними, полягає в тому, що вони повертають корисні дані для покажчика з нульовим значенням ID, так як в даному класі ми працюємо тільки з екранами, що підтримують обробку одиночних торкань

Останній метод, SingleTouchHandlergetTouchEventsC, повинен вже бути вам знайомий Він працює так само, як методи KeyboardHandlergetKeyEvents Необхідно викликати цей метод досить часто, щоб список touchEvents не наповнюється

&nbsp

Джерело: Mario Zechner / Маріо Цехнер, «Програмування ігор під Android», пров Єгор Сидорович, Євген зазноби, Видавництво «Пітер»

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*